|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
Patch curlopt_stderr_with_test for cURL related Bug #52827Patch version 2010-09-13 18:49 UTC Return to Bug #52827 | Download this patchThis patch renders other patches obsolete Obsolete patches: Patch Revisions:Developer: cataphract@php.net
Index: interface.c
===================================================================
--- interface.c (revision 303177)
+++ interface.c (working copy)
@@ -1826,7 +1826,6 @@
}
zval_add_ref(zvalue);
ch->handlers->std_err = *zvalue;
- zend_list_addref(Z_LVAL_PP(zvalue));
} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "the provided file handle is not writable");
RETVAL_FALSE;
Index: tests/bug52827.phpt
===================================================================
--- tests/bug52827.phpt (revision 0)
+++ tests/bug52827.phpt (revision 0)
@@ -0,0 +1,32 @@
+--TEST--
+Bug #52827 (curl_setopt with CURLOPT_STDERR erroneously increments the resource refcount)
+--SKIPIF--
+<?php
+
+if (!extension_loaded('curl')) {
+ exit("skip curl extension not loaded");
+}
+
+?>
+--FILE--
+<?php
+$s = fopen('php://temp/maxmemory=1024','wb+');
+
+/* force conversion of inner stream to STDIO.
+ * This is not necessary in Windows because the
+ * cast to a FILE* handle in curl_setopt already
+ * forces the conversion in that platform. The
+ * reason for this conversion is that the memory
+ * stream has an ugly but working mechanism to
+ * prevent being double freed when it's encapsulated,
+ * while STDIO streams don't. */
+$i = 0;
+while ($i++ < 5000) {
+fwrite($s, str_repeat('a',1024));
+}
+$handle=curl_init('http://www.example.com');
+curl_setopt($handle, CURLOPT_STDERR, $s);
+
+echo "Done.";
+--EXPECTF--
+Done.
|
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 23:00:01 2025 UTC |