You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2014/06/21 19:23:18 UTC

svn commit: r1604435 - /tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java

Author: kkolinko
Date: Sat Jun 21 17:23:18 2014
New Revision: 1604435

URL: http://svn.apache.org/r1604435
Log:
Make sure that context.versions array always has at least 1 element.
Do not assign 0-length array to this field.

Modified:
    tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java

Modified: tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java?rev=1604435&r1=1604434&r2=1604435&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java (original)
+++ tomcat/trunk/java/org/apache/catalina/mapper/Mapper.java Sat Jun 21 17:23:18 2014
@@ -212,23 +212,26 @@ public final class Mapper {
         MappedHost mappedHost = hostMapping.object;
         int slashCount = slashCount(path);
         synchronized (mappedHost) {
+            ContextVersion newContextVersion = new ContextVersion(version,
+                    path, slashCount, context, resources);
+            newContextVersion.welcomeResources = welcomeResources;
+
             MappedContext mappedContext = exactFind(
                     mappedHost.contextList.contexts, path);
             if (mappedContext == null) {
                 mappedContext = new MappedContext(path);
+                mappedContext.versions = new ContextVersion[] { newContextVersion };
                 mappedHost.contextList = mappedHost.contextList.addContext(
                         mappedContext, slashCount);
-            }
-
-            ContextVersion[] contextVersions = mappedContext.versions;
-            ContextVersion[] newContextVersions = new ContextVersion[contextVersions.length + 1];
-            ContextVersion newContextVersion = new ContextVersion(version,
-                    path, slashCount, context, resources);
-            newContextVersion.welcomeResources = welcomeResources;
-            if (insertMap(contextVersions, newContextVersions,
-                    newContextVersion)) {
-                mappedContext.versions = newContextVersions;
                 contextObjectToContextVersionMap.put(context, newContextVersion);
+            } else {
+                ContextVersion[] contextVersions = mappedContext.versions;
+                ContextVersion[] newContextVersions = new ContextVersion[contextVersions.length + 1];
+                if (insertMap(contextVersions, newContextVersions,
+                        newContextVersion)) {
+                    mappedContext.versions = newContextVersions;
+                    contextObjectToContextVersionMap.put(context, newContextVersion);
+                }
             }
         }
 
@@ -265,12 +268,12 @@ public final class Mapper {
             ContextVersion[] newContextVersions =
                 new ContextVersion[contextVersions.length - 1];
             if (removeMap(contextVersions, newContextVersions, version)) {
-                context.versions = newContextVersions;
-
                 if (newContextVersions.length == 0) {
                     // Remove the context
                     mappedHost.contextList = mappedHost.contextList
                             .removeContext(path);
+                } else {
+                    context.versions = newContextVersions;
                 }
             }
         }



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