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

Reply via email to