This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-bcel.git

commit ca1add6d481319fb80ac2930c8500484b2e000e3
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Mon Apr 1 11:24:05 2024 -0400

    Avoid NullPointerException calling
    org.apache.bcel.generic.InstructionList.findHandle(InstructionHandle[],
    int[], int, int) with null
---
 src/changes/changes.xml                            |  1 +
 .../org/apache/bcel/generic/InstructionList.java   | 36 ++++++++++++----------
 2 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 1ee1e74f..4d0d81a0 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -91,6 +91,7 @@ The <action> type attribute can be add,update,fix,remove.
       <action                  type="update" dev="ggregory" due-to="Gary 
Gregory">Avoid NullPointerException after calling 
org.apache.bcel.classfile.BootstrapMethods.setBootstrapMethods(BootstrapMethod[])
 with null.</action>
       <action                  type="update" dev="ggregory" due-to="Gary 
Gregory">Avoid NullPointerException calling 
org.apache.bcel.generic.InstructionList.redirectLocalVariables(LocalVariableGen[],
 InstructionHandle, InstructionHandle) with null.</action>
       <action                  type="update" dev="ggregory" due-to="Gary 
Gregory">Avoid NullPointerException calling 
org.apache.bcel.generic.InstructionList.redirectExceptionHandlers(CodeExceptionGen[],
 InstructionHandle, InstructionHandle) with null.</action>
+      <action                  type="update" dev="ggregory" due-to="Gary 
Gregory">Avoid NullPointerException calling 
org.apache.bcel.generic.InstructionList.findHandle(InstructionHandle[], int[], 
int, int) with null.</action>
       <!-- UPDATE -->
       <action                  type="update" dev="ggregory" 
due-to="Dependabot">Bump org.apache.commons:commons-parent from 66 to 67 
#283.</action>
       <action                  type="update" dev="ggregory" 
due-to="Dependabot">Bump org.jetbrains.kotlin:kotlin-stdlib from 1.9.22 to 
1.9.23 #284.</action>
diff --git a/src/main/java/org/apache/bcel/generic/InstructionList.java 
b/src/main/java/org/apache/bcel/generic/InstructionList.java
index c840a7e7..0f4340b7 100644
--- a/src/main/java/org/apache/bcel/generic/InstructionList.java
+++ b/src/main/java/org/apache/bcel/generic/InstructionList.java
@@ -58,23 +58,25 @@ public class InstructionList implements 
Iterable<InstructionHandle> {
      * @return target position's instruction handle if available
      */
     public static InstructionHandle findHandle(final InstructionHandle[] ihs, 
final int[] pos, final int count, final int target) {
-        int l = 0;
-        int r = count - 1;
-        /*
-         * Do a binary search since the pos array is orderd.
-         */
-        do {
-            final int i = l + r >>> 1;
-            final int j = pos[i];
-            if (j == target) {
-                return ihs[i];
-            }
-            if (target < j) {
-                r = i - 1;
-            } else {
-                l = i + 1;
-            }
-        } while (l <= r);
+        if (ihs != null && pos != null) {
+            int l = 0;
+            int r = count - 1;
+            /*
+             * Do a binary search since the pos array is orderd.
+             */
+            do {
+                final int i = l + r >>> 1;
+                final int j = pos[i];
+                if (j == target) {
+                    return ihs[i];
+                }
+                if (target < j) {
+                    r = i - 1;
+                } else {
+                    l = i + 1;
+                }
+            } while (l <= r);
+        }
         return null;
     }
 

Reply via email to