pollita         Sat Sep  6 02:57:41 2003 EDT

  Modified files:              
    /php-src/ext/standard       http.c 
  Log:
  Fix segfault on uninitialized zval, skip NULL/Resource types, fix integer value 
handling, and process doubles/bools more efficiently.
  
Index: php-src/ext/standard/http.c
diff -u php-src/ext/standard/http.c:1.2 php-src/ext/standard/http.c:1.3
--- php-src/ext/standard/http.c:1.2     Sat Sep  6 01:41:36 2003
+++ php-src/ext/standard/http.c Sat Sep  6 02:57:40 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: http.c,v 1.2 2003/09/06 05:41:36 pollita Exp $ */
+/* $Id: http.c,v 1.3 2003/09/06 06:57:40 pollita Exp $ */
 
 #include "http.h"
 #include "php_ini.h"
@@ -115,6 +115,9 @@
                        php_url_encode_hash_ex(Z_ARRVAL_PP(zdata), formstr, NULL, 0, 
newprefix, newprefix_len, "]", 1 TSRMLS_CC);
                        ht->nApplyCount--;
                        efree(newprefix);
+               } else if (Z_TYPE_PP(zdata) == IS_NULL || Z_TYPE_PP(zdata) == 
IS_RESOURCE) {
+                       /* Skip these types */
+                       continue;
                } else {
                        if (formstr->len) {
                                smart_str_appendl(formstr, arg_sep, arg_sep_len);
@@ -141,10 +144,15 @@
                                        ekey = php_url_encode(Z_STRVAL_PP(zdata), 
Z_STRLEN_PP(zdata), &ekey_len);
                                        break;
                                case IS_LONG:
-                                       ekey_len = spprintf(&ekey, 12, "%ld", idx);
+                               case IS_BOOL:
+                                       ekey_len = spprintf(&ekey, 12, "%ld", 
Z_LVAL_PP(zdata));
+                                       break;
+                               case IS_DOUBLE:
+                                       ekey_len = spprintf(&ekey, 48, "%.*G", (int) 
EG(precision), Z_DVAL_PP(zdata));
                                        break;
                                default:
                                        /* fall back on convert to string */
+                                       MAKE_STD_ZVAL(copyzval);
                                        *copyzval = **zdata;
                                        zval_copy_ctor(copyzval);
                                        convert_to_string_ex(&copyzval);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to