@@ -583,6 +583,8 @@ static size_t curl_write(char *data, size_t size, size_t nmemb, void *ctx)
583583 _php_curl_verify_handlers (ch , /* reporterror */ true);
584584 /* TODO Check callback returns an int or something castable to int */
585585 length = php_curl_get_long (& retval );
586+ } else {
587+ length = -1 ;
586588 }
587589
588590 zval_ptr_dtor (& argv [0 ]);
@@ -632,14 +634,14 @@ static int curl_fnmatch(void *ctx, const char *pattern, const char *string)
632634static int curl_progress (void * clientp , double dltotal , double dlnow , double ultotal , double ulnow )
633635{
634636 php_curl * ch = (php_curl * )clientp ;
635- int rval = 0 ;
637+ int rval = 1 ; // error
636638
637639#if PHP_CURL_DEBUG
638640 fprintf (stderr , "curl_progress() called\n" );
639641 fprintf (stderr , "clientp = %p, dltotal = %f, dlnow = %f, ultotal = %f, ulnow = %f\n" , clientp , dltotal , dlnow , ultotal , ulnow );
640642#endif
641643 if (!ZEND_FCC_INITIALIZED (ch -> handlers .progress )) {
642- return rval ;
644+ return 0 ; // ok
643645 }
644646
645647 zval args [5 ];
@@ -659,8 +661,8 @@ static int curl_progress(void *clientp, double dltotal, double dlnow, double ult
659661 if (!Z_ISUNDEF (retval )) {
660662 _php_curl_verify_handlers (ch , /* reporterror */ true);
661663 /* TODO Check callback returns an int or something castable to int */
662- if (0 ! = php_curl_get_long (& retval )) {
663- rval = 1 ;
664+ if (0 = = php_curl_get_long (& retval )) {
665+ rval = 0 ; // ok
664666 }
665667 }
666668
@@ -673,14 +675,14 @@ static int curl_progress(void *clientp, double dltotal, double dlnow, double ult
673675static int curl_xferinfo (void * clientp , curl_off_t dltotal , curl_off_t dlnow , curl_off_t ultotal , curl_off_t ulnow )
674676{
675677 php_curl * ch = (php_curl * )clientp ;
676- int rval = 0 ;
678+ int rval = 1 ; // error
677679
678680#if PHP_CURL_DEBUG
679681 fprintf (stderr , "curl_xferinfo() called\n" );
680682 fprintf (stderr , "clientp = %p, dltotal = %ld, dlnow = %ld, ultotal = %ld, ulnow = %ld\n" , clientp , dltotal , dlnow , ultotal , ulnow );
681683#endif
682- if (!ZEND_FCC_INITIALIZED (ch -> handlers .xferinfo )) {
683- return rval ;
684+ if (UNEXPECTED ( !ZEND_FCC_INITIALIZED (ch -> handlers .xferinfo ) )) {
685+ return 0 ; // ok
684686 }
685687
686688 zval argv [5 ];
@@ -700,8 +702,8 @@ static int curl_xferinfo(void *clientp, curl_off_t dltotal, curl_off_t dlnow, cu
700702 if (!Z_ISUNDEF (retval )) {
701703 _php_curl_verify_handlers (ch , /* reporterror */ true);
702704 /* TODO Check callback returns an int or something castable to int */
703- if (0 ! = php_curl_get_long (& retval )) {
704- rval = 1 ;
705+ if (0 = = php_curl_get_long (& retval )) {
706+ rval = 0 ; // ok
705707 }
706708 }
707709
@@ -714,13 +716,13 @@ static int curl_xferinfo(void *clientp, curl_off_t dltotal, curl_off_t dlnow, cu
714716static int curl_prereqfunction (void * clientp , char * conn_primary_ip , char * conn_local_ip , int conn_primary_port , int conn_local_port )
715717{
716718 php_curl * ch = (php_curl * )clientp ;
717- int rval = CURL_PREREQFUNC_OK ;
719+ int rval = CURL_PREREQFUNC_ABORT ;
718720
719721 // when CURLOPT_PREREQFUNCTION is set to null, curl_prereqfunction still
720722 // gets called. Return CURL_PREREQFUNC_OK immediately in this case to avoid
721723 // zend_call_known_fcc() with an uninitialized FCC.
722- if (!ZEND_FCC_INITIALIZED (ch -> handlers .prereq )) {
723- return rval ;
724+ if (UNEXPECTED ( !ZEND_FCC_INITIALIZED (ch -> handlers .prereq ) )) {
725+ return CURL_PREREQFUNC_OK ;
724726 }
725727
726728#if PHP_CURL_DEBUG
@@ -858,6 +860,8 @@ static size_t curl_read(char *data, size_t size, size_t nmemb, void *ctx)
858860 }
859861 // TODO Do type error if invalid type?
860862 zval_ptr_dtor (& retval );
863+ } else {
864+ length = CURL_READFUNC_ABORT ;
861865 }
862866
863867 zval_ptr_dtor (& argv [0 ]);
@@ -952,6 +956,8 @@ static size_t curl_write_header(char *data, size_t size, size_t nmemb, void *ctx
952956 // TODO: Check for valid int type for return value
953957 _php_curl_verify_handlers (ch , /* reporterror */ true);
954958 length = php_curl_get_long (& retval );
959+ } else {
960+ length = -1 ;
955961 }
956962 zval_ptr_dtor (& argv [0 ]);
957963 zval_ptr_dtor (& argv [1 ]);
0 commit comments