patch attached regards alan [EMAIL PROTECTED] wrote:
> ID: 16232 > Updated by: [EMAIL PROTECTED] > Reported By: [EMAIL PROTECTED] >-Status: Open >+Status: Feedback > Bug Type: cURL related > Operating System: linux > PHP Version: 4.0CVS-2002-03-23 > New Comment: > >Hey Alan, > >can you please mail this patch to php-dev? > >regards, >Derick > > >Previous Comments: >------------------------------------------------------------------------ > >[2002-03-23 10:11:02] [EMAIL PROTECTED] > >Fixes: >callback to curl_setopt(CURLOPT_HEADERFUNCTION..) always causes this. >FATAL: erealloc(): Unable to allocate 1075529781 bytes > >Fix: >Basically a copy of the curl_write to curl_write_header > >Affects: >all versions (that I know of - including 4.2.0rc1 & 4.2.0-dev) > >test code at >http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/phpmole-ide/phpmole/tools/web_get.php?rev=1.2&content-type=text/vnd.viewcvs-markup > >usage: >php web_get.php http://www.php.net > > /* >
Index: curl.c =================================================================== RCS file: /repository/php4/ext/curl/curl.c,v retrieving revision 1.103 diff -u -r1.103 curl.c --- curl.c 24 Dec 2001 13:58:03 -0000 1.103 +++ curl.c 24 Mar 2002 02:30:04 -0000 @@ -319,7 +319,7 @@ ZVAL_RESOURCE(argv[0], ch->id); zend_list_addref(ch->id); - ZVAL_STRINGL(argv[1], data, (int) length, 1); + ZVAL_STRINGL(argv[1], data, length, 1); error = call_user_function(EG(function_table), NULL, @@ -373,7 +373,7 @@ zend_list_addref(ch->id); ZVAL_RESOURCE(argv[1], t->fd); zend_list_addref(t->fd); - ZVAL_LONG(argv[2], size * nmemb); + ZVAL_LONG(argv[2], (int) size * nmemb); error = call_user_function(EG(function_table), NULL, @@ -406,8 +406,7 @@ { php_curl *ch = (php_curl *) ctx; php_curl_write *t = ch->handlers->write_header; - int error; - int length; + size_t length = size * nmemb; TSRMLS_FETCH(); switch (t->method) { @@ -415,33 +414,30 @@ /* Handle special case write when we're returning the entire transfer */ if (ch->handlers->write->method == PHP_CURL_RETURN) - smart_str_appendl(&ch->handlers->write->buf, data, size * nmemb); + smart_str_appendl(&ch->handlers->write->buf, data, (int) +length); else PUTS(data); - - length = size * nmemb; - break; case PHP_CURL_FILE: - length = fwrite(data, size, nmemb, t->fp); - break; + return fwrite(data, size, nmemb, t->fp); case PHP_CURL_USER: { zval *argv[2]; zval *retval; + int error; TSRMLS_FETCH(); - + MAKE_STD_ZVAL(argv[0]); MAKE_STD_ZVAL(argv[1]); MAKE_STD_ZVAL(retval); ZVAL_RESOURCE(argv[0], ch->id); zend_list_addref(ch->id); - ZVAL_STRINGL(argv[0], data, size * nmemb, 1); + ZVAL_STRINGL(argv[1], data, length, 1); - error = call_user_function(EG(function_table), - NULL, + error = call_user_function(EG(function_table), + NULL, t->func, - retval, 2, argv TSRMLS_CC); + retval, 2, argv TSRMLS_CC); if (error == FAILURE) { php_error(E_WARNING, "Couldn't call the CURLOPT_HEADERFUNCTION"); length = -1; @@ -449,17 +445,14 @@ else { length = Z_LVAL_P(retval); } - zval_ptr_dtor(&argv[0]); zval_ptr_dtor(&argv[1]); zval_ptr_dtor(&retval); break; } case PHP_CURL_IGNORE: - length = size * nmemb; - break; - } - + return length; + } return length; } /* }}} */
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php