Fix perl segfault due to changes in header callback behaviour since curl-7.8.1-pre3
authorCris Bailiff <c.bailiff@awayweb.com>
Mon, 10 Sep 2001 09:17:02 +0000 (09:17 +0000)
committerCris Bailiff <c.bailiff@awayweb.com>
Mon, 10 Sep 2001 09:17:02 +0000 (09:17 +0000)
perl/Curl_easy/Changes
perl/Curl_easy/easy.pm
perl/Curl_easy/easy.xs

index 22c7c8e..c20dd29 100644 (file)
@@ -1,6 +1,10 @@
 Revision history for Perl extension Curl::easy.
 Check out the file README for more info.
 
+1.1.6  Mon Sep 10 2001: - Cris Bailiff <c.bailiff@devsecure.com>
+    - Fix segfault due to changes in header callback behaviour
+      since curl-7.8.1-pre3
+
 1.1.5  Fri Apr 20 2001: - Cris Bailiff <c.bailiff@devsecure.com>
     - Add latest CURLOPT_ and CURLINFO_ constants to the constants list
 
index 8eeb89e..0733de0 100644 (file)
@@ -110,7 +110,7 @@ CURLINFO_CONTENT_LENGTH_UPLOAD
 USE_INTERNAL_VARS
 );
 
-$VERSION = '1.1.5';
+$VERSION = '1.1.6';
 
 $Curl::easy::headers = "";
 $Curl::easy::content = "";
@@ -254,7 +254,7 @@ indicate an error.
  
 Georg Horn <horn@koblenz-net.de>
  
-Additional callback,pod and tes work by Cris Bailiff <c.bailiff@devsecure.com>
+Additional callback,pod and test work by Cris Bailiff <c.bailiff@devsecure.com>
 and Forrest Cahoon <forrest.cahoon@merrillcorp.com>
 
 =head1 SEE ALSO
index 6583b5e..dfe27b4 100644 (file)
@@ -101,12 +101,14 @@ fwrite_wrapper (const void *ptr,
 
        if (stream == stdout) {
            sv = newSViv(0);    /* FIXME: should cast stdout to GLOB somehow? */
-       } else {                /* its already an SV */
+       } else if (stream == NULL) {
+            sv = &PL_sv_undef;
+        } else {               /* its already an SV */
            sv = stream;
        }
 
        if (ptr != NULL) {
-           XPUSHs(sv_2mortal(newSVpvn(ptr, size * nmemb)));
+           XPUSHs(sv_2mortal(newSVpvn((char *)ptr, (STRLEN)(size * nmemb))));
        } else {
            XPUSHs(sv_2mortal(newSVpv("", 0)));
        }
@@ -130,15 +132,20 @@ fwrite_wrapper (const void *ptr,
     } else {
        /* default to a normal 'fwrite' */
        /* stream could be a FILE * or an SV * */
+        /* or NULL since libcurl-7.8.1pre3  */
        FILE *f;
 
-       if (stream == stdout) { /* the only possible FILE ? Think so */
+       if (stream == stdout ||
+            stream == NULL) { /* the only possible FILE ? Think so */
            f = stream;
        } else {                /* its a GLOB */
            f = IoIFP(sv_2io(stream));  /* may barf if not a GLOB */
        }
 
-       return fwrite(ptr, size, nmemb, f);
+       if (f)
+           return fwrite(ptr, size, nmemb, f);
+       else
+           return (size_t) size*nmemb;
     }
 }