dmitry          Thu Aug 18 07:13:53 2005 EDT

  Modified files:              
    /php-src/ext/standard       var.c 
  Log:
  var_export() should escape \ and ' characters.
  
  
http://cvs.php.net/diff.php/php-src/ext/standard/var.c?r1=1.211&r2=1.212&ty=u
Index: php-src/ext/standard/var.c
diff -u php-src/ext/standard/var.c:1.211 php-src/ext/standard/var.c:1.212
--- php-src/ext/standard/var.c:1.211    Wed Aug 17 11:11:41 2005
+++ php-src/ext/standard/var.c  Thu Aug 18 07:13:50 2005
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: var.c,v 1.211 2005/08/17 15:11:41 dmitry Exp $ */
+/* $Id: var.c,v 1.212 2005/08/18 11:13:50 dmitry Exp $ */
 
 
 
@@ -42,7 +42,7 @@
 /* {{{ php_var_dump */
 
 /* temporary, for debugging */
-static void php_var_dump_unicode(UChar *ustr, int32_t length, int verbose, 
char *quote TSRMLS_DC)
+static void php_var_dump_unicode(UChar *ustr, int32_t length, int verbose, 
char *quote, int escape TSRMLS_DC)
 {
        UChar32 c;
        int32_t i;
@@ -72,7 +72,16 @@
        }
 
        ZEND_PUTS(quote);
-       PHPWRITE(out, clen);
+       if (escape) {
+               char *str;
+               int   str_len;
+
+               str = php_addcslashes(out, clen, &str_len, 0, "'\\", 2 
TSRMLS_CC);
+               PHPWRITE(str, str_len);
+               efree(str);
+       } else {
+               PHPWRITE(out, clen);
+       }
        ZEND_PUTS(quote);
        if (verbose) {
                ZEND_PUTS(" {");
@@ -129,7 +138,7 @@
                        php_printf("\"");
                } else if (hash_key->type == IS_UNICODE) {
                        php_printf("u");
-                       php_var_dump_unicode(hash_key->u.unicode, 
hash_key->nKeyLength-1, verbose, "\"" TSRMLS_CC);
+                       php_var_dump_unicode(hash_key->u.unicode, 
hash_key->nKeyLength-1, verbose, "\"", 0 TSRMLS_CC);
                }
                php_printf("]=>\n");
        }
@@ -207,7 +216,7 @@
                break;
        case IS_UNICODE:
                php_printf("%sunicode(%d) ", COMMON, 
u_countChar32((*struc)->value.ustr.val, (*struc)->value.ustr.len));
-               php_var_dump_unicode((*struc)->value.ustr.val, 
(*struc)->value.ustr.len, 0, "\"" TSRMLS_CC);
+               php_var_dump_unicode((*struc)->value.ustr.val, 
(*struc)->value.ustr.len, 0, "\"", 0 TSRMLS_CC);
                PUTS("\n");
                break;
        case IS_ARRAY:
@@ -334,7 +343,7 @@
                        php_printf("\"");
                } else if (hash_key->type == IS_UNICODE) {
                        php_printf("u");
-                       php_var_dump_unicode(hash_key->u.unicode, 
hash_key->nKeyLength-1, 1, "\"" TSRMLS_CC);
+                       php_var_dump_unicode(hash_key->u.unicode, 
hash_key->nKeyLength-1, 1, "\"", 0 TSRMLS_CC);
                }
                php_printf("]=>\n");
        }
@@ -378,7 +387,7 @@
                break;
        case IS_UNICODE:
                php_printf("%sunicode(%d) ", COMMON, 
u_countChar32((*struc)->value.ustr.val, (*struc)->value.ustr.len));
-               php_var_dump_unicode((*struc)->value.ustr.val, 
(*struc)->value.ustr.len, verbose, "\"" TSRMLS_CC);
+               php_var_dump_unicode((*struc)->value.ustr.val, 
(*struc)->value.ustr.len, verbose, "\"", 0 TSRMLS_CC);
                php_printf(" refcount(%u)\n", Z_REFCOUNT_PP(struc));
                break;
        case IS_ARRAY:
@@ -461,7 +470,7 @@
        } else { /* string key */
                php_printf("%*c'", level + 1, ' ');
                if (hash_key->type == IS_UNICODE) {
-                       php_var_dump_unicode(hash_key->u.unicode, 
hash_key->nKeyLength-1, 0, "" TSRMLS_CC);
+                       php_var_dump_unicode(hash_key->u.unicode, 
hash_key->nKeyLength-1, 0, "", 1 TSRMLS_CC);
                } else {
                        char *key;
                        int key_len;
@@ -535,10 +544,7 @@
                efree (tmp_str);
                break;
        case IS_UNICODE:
-/* TODO
-               tmp_str = php_addcslashes(Z_STRVAL_PP(struc), 
Z_STRLEN_PP(struc), &tmp_len, 0, "'\\", 2 TSRMLS_CC);
-*/
-               php_var_dump_unicode(Z_USTRVAL_PP(struc), Z_USTRLEN_PP(struc), 
0, "'" TSRMLS_CC);
+               php_var_dump_unicode(Z_USTRVAL_PP(struc), Z_USTRLEN_PP(struc), 
0, "'", 1 TSRMLS_CC);
                break;
        case IS_ARRAY:
                myht = Z_ARRVAL_PP(struc);

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

Reply via email to