diff --git a/src/xercesc/parsers/SAX2XMLReaderImpl.cpp b/src/xercesc/parsers/SAX2XMLReaderImpl.cpp
index 234e78da149f4d4c8cc4a623c14e707cdc9f9076..af7f51e9a47f766063d462cfc74d102e422d5052 100644
--- a/src/xercesc/parsers/SAX2XMLReaderImpl.cpp
+++ b/src/xercesc/parsers/SAX2XMLReaderImpl.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.14  2002/12/11 22:14:54  knoaman
+ * Performance: no need to use temporary buffer to hold namespace value.
+ *
  * Revision 1.13  2002/12/04 01:57:09  knoaman
  * Scanner re-organization.
  *
@@ -272,6 +275,7 @@ SAX2XMLReaderImpl::SAX2XMLReaderImpl() :
     , fScanner(0)
     , fGrammarResolver(0)
     , fURIStringPool(0)
+    , fValidator(0)
 {
     try
     {
@@ -893,15 +897,13 @@ startElement(   const   XMLElementDecl&         elemDecl
                 fAttrList.setVector(&attrList, attrCount, fScanner);
 
             // call startElement() with namespace declarations
-            XMLBufBid URIBufferBid ( &fStringBuffers ) ;
-            XMLBuffer &URIBuffer = URIBufferBid.getBuffer() ;
-
-            fScanner->getURIText(elemURLId, (XMLBuffer &)URIBuffer);
-
-            fDocHandler->startElement(URIBuffer.getRawBuffer(),
-										elemDecl.getBaseName(),
-										elemQName.getRawBuffer(),
-										fAttrList);
+            fDocHandler->startElement
+            (
+                fScanner->getURIText(elemURLId)
+                , elemDecl.getBaseName()
+                , elemQName.getRawBuffer()
+                , fAttrList
+            );
         }
         else // no namespace
         {
@@ -919,13 +921,12 @@ startElement(   const   XMLElementDecl&         elemDecl
             // call endPrefixMapping appropriately.
             if (getDoNamespaces())
             {
-                XMLBufBid URIBufferBid ( &fStringBuffers ) ;
-                XMLBuffer &URIBuffer = URIBufferBid.getBuffer() ;
-                fScanner->getURIText(elemURLId, (XMLBuffer &)URIBuffer);
-
-                fDocHandler->endElement(	URIBuffer.getRawBuffer(),
-											elemDecl.getBaseName(),
-											elemQName.getRawBuffer());
+                fDocHandler->endElement
+                (
+                    fScanner->getURIText(elemURLId)
+                    , elemDecl.getBaseName()
+                    , elemQName.getRawBuffer()
+                );
 
                 unsigned int numPrefix = fPrefixCounts->pop();
                 for (unsigned int i = 0; i < numPrefix; ++i)
@@ -975,11 +976,6 @@ void SAX2XMLReaderImpl::endElement( const   XMLElementDecl& elemDecl
         // get the prefixes back so that we can call endPrefixMapping()
         if (getDoNamespaces())
         {
-            XMLBufBid URIBufferBid ( &fStringBuffers ) ;
-            XMLBuffer &URIBuffer = URIBufferBid.getBuffer() ;
-
-            fScanner->getURIText(uriId, URIBuffer ) ;
-
             XMLBufBid elemQName( &fStringBuffers ) ;
             if (elemPrefix && *elemPrefix) {
                 elemQName.set(elemPrefix);
@@ -987,9 +983,12 @@ void SAX2XMLReaderImpl::endElement( const   XMLElementDecl& elemDecl
             }
             elemQName.append(elemDecl.getBaseName());
 
-            fDocHandler->endElement(	URIBuffer.getRawBuffer(),
-										elemDecl.getBaseName(),
-										elemQName.getRawBuffer());
+            fDocHandler->endElement
+            (
+                fScanner->getURIText(uriId)
+                , elemDecl.getBaseName()
+                , elemQName.getRawBuffer()
+            );
 
             unsigned int numPrefix = fPrefixCounts->pop();
             for (unsigned int i = 0; i < numPrefix; i++)