You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2023/11/27 13:47:26 UTC

(tomcat) branch main updated (e09859ae0d -> ebc1ed63be)

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

markt pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git


    from e09859ae0d Test case for BZ 68119
     new 2daa17a212 Clean-up prior to fixing BZ 68119
     new ebc1ed63be Add comment on why >= rather than == is used

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 java/jakarta/el/CompositeELResolver.java | 36 ++++++++++++++++++--------------
 1 file changed, 20 insertions(+), 16 deletions(-)


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


(tomcat) 01/02: Clean-up prior to fixing BZ 68119

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 2daa17a21286b80e6a82c9f4f5760839062afdee
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Nov 27 13:43:00 2023 +0000

    Clean-up prior to fixing BZ 68119
---
 java/jakarta/el/CompositeELResolver.java | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/java/jakarta/el/CompositeELResolver.java b/java/jakarta/el/CompositeELResolver.java
index 2f52713ebb..77331f5b6e 100644
--- a/java/jakarta/el/CompositeELResolver.java
+++ b/java/jakarta/el/CompositeELResolver.java
@@ -31,32 +31,32 @@ public class CompositeELResolver extends ELResolver {
         SCOPED_ATTRIBUTE_EL_RESOLVER = clazz;
     }
 
-    private int size;
+    private int resolversSize;
 
     private ELResolver[] resolvers;
 
     public CompositeELResolver() {
-        this.size = 0;
-        this.resolvers = new ELResolver[8];
+        resolversSize = 0;
+        resolvers = new ELResolver[8];
     }
 
     public void add(ELResolver elResolver) {
         Objects.requireNonNull(elResolver);
 
-        if (this.size >= this.resolvers.length) {
-            ELResolver[] nr = new ELResolver[this.size * 2];
-            System.arraycopy(this.resolvers, 0, nr, 0, this.size);
-            this.resolvers = nr;
+        if (resolversSize >= resolvers.length) {
+            ELResolver[] nr = new ELResolver[resolversSize * 2];
+            System.arraycopy(resolvers, 0, nr, 0, resolversSize);
+            resolvers = nr;
         }
-        this.resolvers[this.size++] = elResolver;
+        resolvers[resolversSize++] = elResolver;
     }
 
     @Override
     public Object getValue(ELContext context, Object base, Object property) {
         context.setPropertyResolved(false);
-        int sz = this.size;
+        int sz = resolversSize;
         for (int i = 0; i < sz; i++) {
-            Object result = this.resolvers[i].getValue(context, base, property);
+            Object result = resolvers[i].getValue(context, base, property);
             if (context.isPropertyResolved()) {
                 return result;
             }
@@ -67,7 +67,7 @@ public class CompositeELResolver extends ELResolver {
     @Override
     public Object invoke(ELContext context, Object base, Object method, Class<?>[] paramTypes, Object[] params) {
         context.setPropertyResolved(false);
-        int sz = this.size;
+        int sz = this.resolversSize;
         for (int i = 0; i < sz; i++) {
             Object obj = this.resolvers[i].invoke(context, base, method, paramTypes, params);
             if (context.isPropertyResolved()) {
@@ -80,7 +80,7 @@ public class CompositeELResolver extends ELResolver {
     @Override
     public Class<?> getType(ELContext context, Object base, Object property) {
         context.setPropertyResolved(false);
-        int sz = this.size;
+        int sz = this.resolversSize;
         for (int i = 0; i < sz; i++) {
             Class<?> type = this.resolvers[i].getType(context, base, property);
             if (context.isPropertyResolved()) {
@@ -103,7 +103,7 @@ public class CompositeELResolver extends ELResolver {
     @Override
     public void setValue(ELContext context, Object base, Object property, Object value) {
         context.setPropertyResolved(false);
-        int sz = this.size;
+        int sz = this.resolversSize;
         for (int i = 0; i < sz; i++) {
             this.resolvers[i].setValue(context, base, property, value);
             if (context.isPropertyResolved()) {
@@ -115,7 +115,7 @@ public class CompositeELResolver extends ELResolver {
     @Override
     public boolean isReadOnly(ELContext context, Object base, Object property) {
         context.setPropertyResolved(false);
-        int sz = this.size;
+        int sz = this.resolversSize;
         for (int i = 0; i < sz; i++) {
             boolean readOnly = this.resolvers[i].isReadOnly(context, base, property);
             if (context.isPropertyResolved()) {
@@ -128,7 +128,7 @@ public class CompositeELResolver extends ELResolver {
     @Override
     public Class<?> getCommonPropertyType(ELContext context, Object base) {
         Class<?> commonType = null;
-        int sz = this.size;
+        int sz = this.resolversSize;
         for (int i = 0; i < sz; i++) {
             Class<?> type = this.resolvers[i].getCommonPropertyType(context, base);
             if (type != null && (commonType == null || commonType.isAssignableFrom(type))) {
@@ -141,7 +141,7 @@ public class CompositeELResolver extends ELResolver {
     @Override
     public <T> T convertToType(ELContext context, Object obj, Class<T> type) {
         context.setPropertyResolved(false);
-        int sz = this.size;
+        int sz = this.resolversSize;
         for (int i = 0; i < sz; i++) {
             T result = this.resolvers[i].convertToType(context, obj, type);
             if (context.isPropertyResolved()) {


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


(tomcat) 02/02: Add comment on why >= rather than == is used

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit ebc1ed63be1af95ec88dfad0cd0e54d7a5a3013e
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Nov 27 13:47:03 2023 +0000

    Add comment on why >= rather than == is used
---
 java/jakarta/el/CompositeELResolver.java | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/java/jakarta/el/CompositeELResolver.java b/java/jakarta/el/CompositeELResolver.java
index 77331f5b6e..5c931dfe05 100644
--- a/java/jakarta/el/CompositeELResolver.java
+++ b/java/jakarta/el/CompositeELResolver.java
@@ -43,6 +43,10 @@ public class CompositeELResolver extends ELResolver {
     public void add(ELResolver elResolver) {
         Objects.requireNonNull(elResolver);
 
+        /*
+         * resolversSize should never be larger than resolvers.length. If it ever is, the code will fail when execution
+         * reaches System.arraycopy with an IndexOutOfBoundsException.
+         */
         if (resolversSize >= resolvers.length) {
             ELResolver[] nr = new ELResolver[resolversSize * 2];
             System.arraycopy(resolvers, 0, nr, 0, resolversSize);


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org