aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCris Bailiff <c.bailiff@awayweb.com>2001-09-10 09:17:02 +0000
committerCris Bailiff <c.bailiff@awayweb.com>2001-09-10 09:17:02 +0000
commit96c7253cea75dda86cde6ef5d3d7269843318bbf (patch)
treea67e5098dc4b84d746640f213703d5d11d4961ce
parent3f5227dfc7389f008137a6f4703af8022ab862f3 (diff)
Fix perl segfault due to changes in header callback behaviour since curl-7.8.1-pre3
-rw-r--r--perl/Curl_easy/Changes4
-rw-r--r--perl/Curl_easy/easy.pm4
-rw-r--r--perl/Curl_easy/easy.xs15
3 files changed, 17 insertions, 6 deletions
diff --git a/perl/Curl_easy/Changes b/perl/Curl_easy/Changes
index 22c7c8e00..c20dd29e6 100644
--- a/perl/Curl_easy/Changes
+++ b/perl/Curl_easy/Changes
@@ -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
diff --git a/perl/Curl_easy/easy.pm b/perl/Curl_easy/easy.pm
index 8eeb89e17..0733de0c7 100644
--- a/perl/Curl_easy/easy.pm
+++ b/perl/Curl_easy/easy.pm
@@ -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
diff --git a/perl/Curl_easy/easy.xs b/perl/Curl_easy/easy.xs
index 6583b5ec5..dfe27b477 100644
--- a/perl/Curl_easy/easy.xs
+++ b/perl/Curl_easy/easy.xs
@@ -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;
}
}