Author: jasons
Date: Sat Dec  3 04:47:07 2005
New Revision: 351931

URL: http://svn.apache.org/viewcvs?rev=351931&view=rev
Log:
resolveEntity() - now returns undef if not handled by the resolver, delete 
char*'s returned by transcode() to avoid memory leaks

Modified:
    xerces/xerces-p/trunk/Handler/PerlEntityResolverHandler.i

Modified: xerces/xerces-p/trunk/Handler/PerlEntityResolverHandler.i
URL: 
http://svn.apache.org/viewcvs/xerces/xerces-p/trunk/Handler/PerlEntityResolverHandler.i?rev=351931&r1=351930&r2=351931&view=diff
==============================================================================
--- xerces/xerces-p/trunk/Handler/PerlEntityResolverHandler.i (original)
+++ xerces/xerces-p/trunk/Handler/PerlEntityResolverHandler.i Sat Dec  3 
04:47:07 2005
@@ -97,12 +97,19 @@
 
     SPAGAIN ;
 
+    SV* source_sv;
     if (count != 1)
-       croak("EntityResolver did not retury any object\n") ;
+    {
+       warn("EntityResolver did not retury any object\n");
+       source_sv = &PL_sv_undef;
+    }
+    else
+    {
+        source_sv = POPs;
+    }
 
-    SV* source_sv = POPs;
     InputSource *source;
-    if (!sv_derived_from(source_sv,"XML::Xerces::InputSource")) {
+    if (count == 1 && SvOK(source_sv) && 
!sv_derived_from(source_sv,"XML::Xerces::InputSource")) {
        croak("EntityResolver did not return an InputSource\n") ;
     }
 
@@ -111,6 +118,12 @@
         croak("EntityResolver did not return an InputSource. Expected %s", 
SWIGTYPE_p_XERCES_CPP_NAMESPACE__InputSource->name);
     }
     PUTBACK ;
+
+
+       // transcode mallocs this and leaves it up to us to free the memory
+    delete [] cptr1;
+    delete [] cptr2;
+
     FREETMPS;
     LEAVE;
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to