You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by ga...@apache.org on 2001/08/09 19:13:15 UTC

cvs commit: xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java

garyp       01/08/09 10:13:15

  Modified:    java/src/org/apache/xml/dtm/ref/sax2dtm SAX2DTM.java
  Log:
  Fix for bugzilla 3060 (http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3060).  Prefixes and
  namespaceURIs are kept in the same Vector, m_prefixMappings.  The entries are stored as pairs of vector elements.  The even elements contain the prefix and the odd elements contain the URI.  In two routines, getPrefix and endElement, the appropriate prefix or URI was being located in the Vector using an indexOf.  However, in this case where the prefix and the URI were the same, the routine was looking for the URI but finding the prefix instead of the URI.  It tried tried to back up one to get the prefix and underflowed the Vector size.
  
  Revision  Changes    Path
  1.15      +13 -3     xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm/SAX2DTM.java
  
  Index: SAX2DTM.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/sax2dtm/SAX2DTM.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- SAX2DTM.java	2001/07/28 00:25:59	1.14
  +++ SAX2DTM.java	2001/08/09 17:13:15	1.15
  @@ -1230,11 +1230,16 @@
     {
   
       String prefix;
  +    int uriIndex = -1;
   
       if (null != uri && uri.length() > 0)
       {
  -      int uriIndex = m_prefixMappings.indexOf(uri, 0);
   
  +      do
  +      {
  +        uriIndex = m_prefixMappings.indexOf(uri, ++uriIndex);
  +      } while ( (uriIndex & 0x01) == 0);
  +
         if (uriIndex >= 0)
         {
           prefix = (String) m_prefixMappings.elementAt(uriIndex - 1);
  @@ -1560,9 +1565,14 @@
   
       if(null == prefix)
         prefix = "";
  +
  +    int index = m_contextIndexes.peek() - 1;
  +
  +    do
  +    {
  +      index = m_prefixMappings.indexOf(prefix, ++index);
  +    } while ( (index >= 0) && ((index & 0x01) == 0x01) );
   
  -    int start = m_contextIndexes.peek();
  -    int index = m_prefixMappings.indexOf(prefix, start);
   
       if (index > -1)
       {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org