Commit 96c7253c authored by Cris Bailiff's avatar Cris Bailiff
Browse files

Fix perl segfault due to changes in header callback behaviour since curl-7.8.1-pre3

parent 3f5227df
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
Revision history for Perl extension Curl::easy.
Revision history for Perl extension Curl::easy.
Check out the file README for more info.
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>
1.1.5  Fri Apr 20 2001: - Cris Bailiff <c.bailiff@devsecure.com>
    - Add latest CURLOPT_ and CURLINFO_ constants to the constants list
    - Add latest CURLOPT_ and CURLINFO_ constants to the constants list


+2 −2
Original line number Original line Diff line number Diff line
@@ -110,7 +110,7 @@ CURLINFO_CONTENT_LENGTH_UPLOAD
USE_INTERNAL_VARS
USE_INTERNAL_VARS
);
);


$VERSION = '1.1.5';
$VERSION = '1.1.6';


$Curl::easy::headers = "";
$Curl::easy::headers = "";
$Curl::easy::content = "";
$Curl::easy::content = "";
@@ -254,7 +254,7 @@ indicate an error.
 
 
Georg Horn <horn@koblenz-net.de>
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>
and Forrest Cahoon <forrest.cahoon@merrillcorp.com>


=head1 SEE ALSO
=head1 SEE ALSO
+11 −4
Original line number Original line Diff line number Diff line
@@ -101,12 +101,14 @@ fwrite_wrapper (const void *ptr,


	if (stream == stdout) {
	if (stream == stdout) {
	    sv = newSViv(0);	/* FIXME: should cast stdout to GLOB somehow? */
	    sv = newSViv(0);	/* FIXME: should cast stdout to GLOB somehow? */
	} else if (stream == NULL) {
            sv = &PL_sv_undef;
        } else {		/* its already an SV */
        } else {		/* its already an SV */
	    sv = stream;
	    sv = stream;
	}
	}


	if (ptr != NULL) {
	if (ptr != NULL) {
	    XPUSHs(sv_2mortal(newSVpvn(ptr, size * nmemb)));
	    XPUSHs(sv_2mortal(newSVpvn((char *)ptr, (STRLEN)(size * nmemb))));
	} else {
	} else {
	    XPUSHs(sv_2mortal(newSVpv("", 0)));
	    XPUSHs(sv_2mortal(newSVpv("", 0)));
	}
	}
@@ -130,15 +132,20 @@ fwrite_wrapper (const void *ptr,
    } else {
    } else {
	/* default to a normal 'fwrite' */
	/* default to a normal 'fwrite' */
	/* stream could be a FILE * or an SV * */
	/* stream could be a FILE * or an SV * */
        /* or NULL since libcurl-7.8.1pre3  */
	FILE *f;
	FILE *f;


	if (stream == stdout) {	/* the only possible FILE ? Think so */
	if (stream == stdout ||
            stream == NULL) { /* the only possible FILE ? Think so */
	    f = stream;
	    f = stream;
	} else {		/* its a GLOB */
	} else {		/* its a GLOB */
	    f = IoIFP(sv_2io(stream));	/* may barf if not a GLOB */
	    f = IoIFP(sv_2io(stream));	/* may barf if not a GLOB */
	}
	}


	if (f)
           return fwrite(ptr, size, nmemb, f);
           return fwrite(ptr, size, nmemb, f);
	else
           return (size_t) size*nmemb;
    }
    }
}
}