[PHP-CVS] com php-src: Reset LIBS temporarily to make sure PHP_CHECK_FUNC will look into libc.: NEWS acinclude.m4
Commit:a6c95c8a00e9286ccc662e9682f9254e153d6833 Author:Moriyoshi Koizumi Tue, 3 Apr 2012 01:32:42 +0900 Parents: 8684fb7facd8f5c1589996c1ebfd782f77c245ff Branches: PHP-5.3 PHP-5.4 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=a6c95c8a00e9286ccc662e9682f9254e153d6833 Log: Reset LIBS temporarily to make sure PHP_CHECK_FUNC will look into libc. See Gentoo bug #364139. https://bugs.gentoo.org/show_bug.cgi?id=364139 Reported by Naohiro Aota. Bugs: https://bugs.php.net/364139 Changed paths: M NEWS M acinclude.m4 Diff: diff --git a/NEWS b/NEWS index c7cd2c7..736ffe8 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,11 @@ PHP NEWS ?? ??? 2012, PHP 5.3.12 ?? ??? 2012, PHP 5.3.11 +- Iconv extension: + . Fixed a bug that iconv extension fails to link to the correct library +when another extension makes use of a library that links to the iconv +library. See https://bugs.gentoo.org/show_bug.cgi?id=364139 for detail. +(Moriyoshi) (merge after 5.3.11 release) diff --git a/acinclude.m4 b/acinclude.m4 index 5515b3f..ddf7285 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -2438,7 +2438,12 @@ AC_DEFUN([PHP_SETUP_ICONV], [ dnl dnl Check libc first if no path is provided in --with-iconv dnl + if test "$PHP_ICONV" = "yes"; then +dnl Reset LIBS temporarily as it may have already been included +dnl -liconv in. +LIBS_save="$LIBS" +LIBS= AC_CHECK_FUNC(iconv, [ found_iconv=yes ],[ @@ -2448,6 +2453,7 @@ AC_DEFUN([PHP_SETUP_ICONV], [ found_iconv=yes ]) ]) +LIBS="$LIBS_save" fi dnl -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: Merge branch 'PHP-5.3' into PHP-5.4: acinclude.m4
Commit:43047598c4e4ed76daa82ff509e46c40087f0ea4 Author:Moriyoshi Koizumi Tue, 3 Apr 2012 02:00:23 +0900 Parents: 374646c36b07956da928e0583854002e55b4013e a6c95c8a00e9286ccc662e9682f9254e153d6833 Branches: PHP-5.4 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=43047598c4e4ed76daa82ff509e46c40087f0ea4 Log: Merge branch 'PHP-5.3' into PHP-5.4 Conflicts: NEWS Changed paths: MM acinclude.m4 Diff: -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: Fix bug #62373 (serialize() generates wrong reference to the object): ext/standard/tests/serialize/bug62373.phpt ext/standard/var.c
Commit:e42718227945202044516c71f0098fe464987410 Author:Moriyoshi Koizumi Mon, 25 Jun 2012 19:13:23 +0900 Parents: 5b3f4d25ea047f14d6485fb6f456cece384d33ee Branches: PHP-5.3 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=e42718227945202044516c71f0098fe464987410 Log: Fix bug #62373 (serialize() generates wrong reference to the object) Bugs: https://bugs.php.net/62373 Changed paths: A ext/standard/tests/serialize/bug62373.phpt M ext/standard/var.c Diff: diff --git a/ext/standard/tests/serialize/bug62373.phpt b/ext/standard/tests/serialize/bug62373.phpt new file mode 100644 index 000..666c33e --- /dev/null +++ b/ext/standard/tests/serialize/bug62373.phpt @@ -0,0 +1,25 @@ +--TEST-- +Bug #62373 (serialize() generates wrong reference to the object) +--FILE-- + +--EXPECT-- +OK diff --git a/ext/standard/var.c b/ext/standard/var.c index ddcfde0..3e2a45c 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -544,12 +544,9 @@ static inline int php_add_var_hash(HashTable *var_hash, zval *var, void *var_old /* relies on "(long)" being a perfect hash function for data pointers, * however the actual identity of an object has had to be determined -* by its object handle and the class entry since 5.0. */ +* by its object handle since 5.0. */ if ((Z_TYPE_P(var) == IS_OBJECT) && Z_OBJ_HT_P(var)->get_class_entry) { - p = smart_str_print_long(id + sizeof(id) - 1, - (((size_t)Z_OBJCE_P(var) << 5) - | ((size_t)Z_OBJCE_P(var) >> (sizeof(long) * 8 - 5))) - + (long) Z_OBJ_HANDLE_P(var)); + p = smart_str_print_long(id + sizeof(id) - 1, (long) Z_OBJ_HANDLE_P(var)); *(--p) = 'O'; len = id + sizeof(id) - 1 - p; } else { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: Fix bug #62373 (serialize() generates wrong reference to the object): ext/standard/tests/serialize/bug62373.phpt ext/standard/var.c
Commit:91e1df704eed40325fd963a308e466bbbf96184f Author:Moriyoshi Koizumi Mon, 25 Jun 2012 19:13:23 +0900 Parents: ad641950b3d047fc20729b7a18c62b414622cc79 Branches: PHP-5.4 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=91e1df704eed40325fd963a308e466bbbf96184f Log: Fix bug #62373 (serialize() generates wrong reference to the object) Bugs: https://bugs.php.net/62373 Changed paths: A ext/standard/tests/serialize/bug62373.phpt M ext/standard/var.c Diff: diff --git a/ext/standard/tests/serialize/bug62373.phpt b/ext/standard/tests/serialize/bug62373.phpt new file mode 100644 index 000..666c33e --- /dev/null +++ b/ext/standard/tests/serialize/bug62373.phpt @@ -0,0 +1,25 @@ +--TEST-- +Bug #62373 (serialize() generates wrong reference to the object) +--FILE-- + +--EXPECT-- +OK diff --git a/ext/standard/var.c b/ext/standard/var.c index c6126e9..735d0a7 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -541,12 +541,9 @@ static inline int php_add_var_hash(HashTable *var_hash, zval *var, void *var_old /* relies on "(long)" being a perfect hash function for data pointers, * however the actual identity of an object has had to be determined -* by its object handle and the class entry since 5.0. */ +* by its object handle since 5.0. */ if ((Z_TYPE_P(var) == IS_OBJECT) && Z_OBJ_HT_P(var)->get_class_entry) { - p = smart_str_print_long(id + sizeof(id) - 1, - (((size_t)Z_OBJCE_P(var) << 5) - | ((size_t)Z_OBJCE_P(var) >> (sizeof(long) * 8 - 5))) - + (long) Z_OBJ_HANDLE_P(var)); + p = smart_str_print_long(id + sizeof(id) - 1, (long) Z_OBJ_HANDLE_P(var)); *(--p) = 'O'; len = id + sizeof(id) - 1 - p; } else { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: BFN: NEWS
Commit:ce2082d24f2461b6403e13563ed18656a95581fa Author:Moriyoshi Koizumi Mon, 25 Jun 2012 19:20:38 +0900 Parents: e42718227945202044516c71f0098fe464987410 Branches: PHP-5.3 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ce2082d24f2461b6403e13563ed18656a95581fa Log: BFN Changed paths: M NEWS Diff: diff --git a/NEWS b/NEWS index b9bb009..63e91f5 100644 --- a/NEWS +++ b/NEWS @@ -92,6 +92,8 @@ PHP NEWS (Anatoliy) . Fixed bug #61991 (long overflow in realpath_cache_get()). (Anatoliy) . Changed php://fd to be available only for CLI. + . Fixed bug #62373 (serialize() generates wrong reference to the object). +(Moriyoshi) - Fileinfo: . Fixed bug #61812 (Uninitialised value used in libmagic). -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] com php-src: mb_split() can now handle empty matches like preg_split() does.: NEWS ext/mbstring/php_mbregex.c ext/mbstring/tests/mb_split_empty_match.phpt ext/mbstring/tests/mb_split_variati
Commit:0ea83ff8478d867ebf1603a43cd5d3432022cee7 Author:Moriyoshi Koizumi Sun, 10 Feb 2013 15:04:23 +0900 Parents: 92a7924c1a97563cb73d37c369fdea4794203397 Branches: PHP-5.4 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=0ea83ff8478d867ebf1603a43cd5d3432022cee7 Log: mb_split() can now handle empty matches like preg_split() does. Changed paths: M NEWS M ext/mbstring/php_mbregex.c A ext/mbstring/tests/mb_split_empty_match.phpt M ext/mbstring/tests/mb_split_variation1.phpt Diff: diff --git a/NEWS b/NEWS index 2aff180..e3b5075 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,9 @@ PHP NEWS - CLI server: . Fixed bug #64128 (buit-in web server is broken on ppc64). (Remi) +- Mbstring: + . mb_split() can now handle empty matches like preg_split() does. (Moriyoshi) + ?? ??? 2012, PHP 5.4.12 - Core: diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index a572bd4..145ee0c 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -1055,7 +1055,7 @@ PHP_FUNCTION(mb_split) php_mb_regex_t *re; OnigRegion *regs = NULL; char *string; - OnigUChar *pos; + OnigUChar *pos, *chunk_pos; int string_len; int n, err; @@ -1065,8 +1065,8 @@ PHP_FUNCTION(mb_split) RETURN_FALSE; } - if (count == 0) { - count = 1; + if (count > 0) { + count--; } /* create regex pattern buffer */ @@ -1076,31 +1076,30 @@ PHP_FUNCTION(mb_split) array_init(return_value); - pos = (OnigUChar *)string; + chunk_pos = pos = (OnigUChar *)string; err = 0; regs = onig_region_new(); /* churn through str, generating array entries as we go */ - while ((--count != 0) && - (err = onig_search(re, (OnigUChar *)string, (OnigUChar *)(string + string_len), pos, (OnigUChar *)(string + string_len), regs, 0)) >= 0) { - if (regs->beg[0] == regs->end[0]) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty regular expression"); + while (count != 0 && (pos - (OnigUChar *)string) < string_len) { + int beg, end; + err = onig_search(re, (OnigUChar *)string, (OnigUChar *)(string + string_len), pos, (OnigUChar *)(string + string_len), regs, 0); + if (err < 0) { break; } - + beg = regs->beg[0], end = regs->end[0]; /* add it to the array */ - if (regs->beg[0] < string_len && regs->beg[0] >= (pos - (OnigUChar *)string)) { - add_next_index_stringl(return_value, (char *)pos, ((OnigUChar *)(string + regs->beg[0]) - pos), 1); + if ((pos - (OnigUChar *)string) < end) { + if (beg < string_len && beg >= (chunk_pos - (OnigUChar *)string)) { + add_next_index_stringl(return_value, (char *)chunk_pos, ((OnigUChar *)(string + beg) - chunk_pos), 1); + --count; + } else { + err = -2; + break; + } + /* point at our new starting point */ + chunk_pos = pos = (OnigUChar *)string + end; } else { - err = -2; - break; - } - /* point at our new starting point */ - n = regs->end[0]; - if ((pos - (OnigUChar *)string) < n) { - pos = (OnigUChar *)string + n; - } - if (count < 0) { - count = 0; + pos++; } onig_region_free(regs, 0); } @@ -1117,9 +1116,9 @@ PHP_FUNCTION(mb_split) } /* otherwise we just have one last element to add to the array */ - n = ((OnigUChar *)(string + string_len) - pos); + n = ((OnigUChar *)(string + string_len) - chunk_pos); if (n > 0) { - add_next_index_stringl(return_value, (char *)pos, n, 1); + add_next_index_stringl(return_value, (char *)chunk_pos, n, 1); } else { add_next_index_stringl(return_value, "", 0, 1); } diff --git a/ext/mbstring/tests/mb_split_empty_match.phpt b/ext/mbstring/tests/mb_split_empty_match.phpt new file mode 100644 index 000..df3a22c --- /dev/null +++ b/ext/mbstring/tests/mb_split_empty_match.phpt @@ -0,0 +1,23 @@ +--TEST-- +mb_split() empty match +-- +--SKIPIF-- + +--FILE-- + + string(2) "a +" + [1]=> + string(2) "b +" + [2]=> + string(1) "c" +} diff --git
[PHP-CVS] com php-src: mb_split() can now handle empty matches like preg_split() does.: ext/mbstring/php_mbregex.c ext/mbstring/tests/mb_split_empty_match.phpt ext/mbstring/tests/mb_split_variation1.p
Commit:20eb33b3212bd6c17d73c569c7345ae23c04d3ef Author:Moriyoshi Koizumi Sun, 10 Feb 2013 15:04:23 +0900 Parents: 3d9a31efdfbbc3d73b8c94649f38035277264151 Branches: PHP-5.5 Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=20eb33b3212bd6c17d73c569c7345ae23c04d3ef Log: mb_split() can now handle empty matches like preg_split() does. Changed paths: M ext/mbstring/php_mbregex.c A ext/mbstring/tests/mb_split_empty_match.phpt M ext/mbstring/tests/mb_split_variation1.phpt Diff: diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index a572bd4..145ee0c 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -1055,7 +1055,7 @@ PHP_FUNCTION(mb_split) php_mb_regex_t *re; OnigRegion *regs = NULL; char *string; - OnigUChar *pos; + OnigUChar *pos, *chunk_pos; int string_len; int n, err; @@ -1065,8 +1065,8 @@ PHP_FUNCTION(mb_split) RETURN_FALSE; } - if (count == 0) { - count = 1; + if (count > 0) { + count--; } /* create regex pattern buffer */ @@ -1076,31 +1076,30 @@ PHP_FUNCTION(mb_split) array_init(return_value); - pos = (OnigUChar *)string; + chunk_pos = pos = (OnigUChar *)string; err = 0; regs = onig_region_new(); /* churn through str, generating array entries as we go */ - while ((--count != 0) && - (err = onig_search(re, (OnigUChar *)string, (OnigUChar *)(string + string_len), pos, (OnigUChar *)(string + string_len), regs, 0)) >= 0) { - if (regs->beg[0] == regs->end[0]) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty regular expression"); + while (count != 0 && (pos - (OnigUChar *)string) < string_len) { + int beg, end; + err = onig_search(re, (OnigUChar *)string, (OnigUChar *)(string + string_len), pos, (OnigUChar *)(string + string_len), regs, 0); + if (err < 0) { break; } - + beg = regs->beg[0], end = regs->end[0]; /* add it to the array */ - if (regs->beg[0] < string_len && regs->beg[0] >= (pos - (OnigUChar *)string)) { - add_next_index_stringl(return_value, (char *)pos, ((OnigUChar *)(string + regs->beg[0]) - pos), 1); + if ((pos - (OnigUChar *)string) < end) { + if (beg < string_len && beg >= (chunk_pos - (OnigUChar *)string)) { + add_next_index_stringl(return_value, (char *)chunk_pos, ((OnigUChar *)(string + beg) - chunk_pos), 1); + --count; + } else { + err = -2; + break; + } + /* point at our new starting point */ + chunk_pos = pos = (OnigUChar *)string + end; } else { - err = -2; - break; - } - /* point at our new starting point */ - n = regs->end[0]; - if ((pos - (OnigUChar *)string) < n) { - pos = (OnigUChar *)string + n; - } - if (count < 0) { - count = 0; + pos++; } onig_region_free(regs, 0); } @@ -1117,9 +1116,9 @@ PHP_FUNCTION(mb_split) } /* otherwise we just have one last element to add to the array */ - n = ((OnigUChar *)(string + string_len) - pos); + n = ((OnigUChar *)(string + string_len) - chunk_pos); if (n > 0) { - add_next_index_stringl(return_value, (char *)pos, n, 1); + add_next_index_stringl(return_value, (char *)chunk_pos, n, 1); } else { add_next_index_stringl(return_value, "", 0, 1); } diff --git a/ext/mbstring/tests/mb_split_empty_match.phpt b/ext/mbstring/tests/mb_split_empty_match.phpt new file mode 100644 index 000..df3a22c --- /dev/null +++ b/ext/mbstring/tests/mb_split_empty_match.phpt @@ -0,0 +1,23 @@ +--TEST-- +mb_split() empty match +-- +--SKIPIF-- + +--FILE-- + + string(2) "a +" + [1]=> + string(2) "b +" + [2]=> + string(1) "c" +} diff --git a/ext/mbstring/tests/mb_split_variation1.phpt b/ext/mbstring/tests/mb_split_variation1.phpt index be3230e..b508049 100644 --- a/ext/mbstring/tests/mb_split_variation1.phpt +++ b/ext/mbstring/tests/mb_split_variation1.phpt @@ -156,16 +156,12 @@ array(1) { } -- Iteration 10 -- - -Warning: mb_split(): Empty regular expression in %s on line %d array(1) { [0]=> string(13) "a b c d e f g&quo
Re: [PHP-CVS] svn: /php/php-src/trunk/ NEWS Zend/zend_compile.c Zend/zend_globals.h Zend/zend_multibyte.c Zend/zend_multibyte.h ext/exif/exif.c ext/mbstring/mbstring.c ext/standard/html.c main/rfc1867
Hey, I don't think there was agreement on this yet. I've actually been preparing a patch that minimizes the extra hook points in SAPI. Moriyoshi On Wed, Dec 8, 2010 at 8:27 PM, Dmitry Stogov wrote: > dmitry Wed, 08 Dec 2010 11:27:34 + > > Revision: http://svn.php.net/viewvc?view=revision&revision=306077 > > Log: > Removed compile time dependency from ext/mbstring > > Changed paths: > U php/php-src/trunk/NEWS > U php/php-src/trunk/Zend/zend_compile.c > U php/php-src/trunk/Zend/zend_globals.h > U php/php-src/trunk/Zend/zend_multibyte.c > U php/php-src/trunk/Zend/zend_multibyte.h > U php/php-src/trunk/ext/exif/exif.c > U php/php-src/trunk/ext/mbstring/mbstring.c > U php/php-src/trunk/ext/standard/html.c > U php/php-src/trunk/main/rfc1867.c > U php/php-src/trunk/main/rfc1867.h > A php/php-src/trunk/tests/basic/028.phpt > A php/php-src/trunk/tests/basic/029.phpt > > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] svn: /php/php-src/trunk/ NEWS Zend/zend_compile.c Zend/zend_globals.h Zend/zend_multibyte.c Zend/zend_multibyte.h ext/exif/exif.c ext/mbstring/mbstring.c ext/standard/html.c main/rfc1867
Please revert. On Thu, Dec 9, 2010 at 3:00 PM, Moriyoshi Koizumi wrote: > Hey, I don't think there was agreement on this yet. I've actually > been preparing a patch that minimizes the extra hook points in SAPI. > > Moriyoshi > > On Wed, Dec 8, 2010 at 8:27 PM, Dmitry Stogov wrote: >> dmitry Wed, 08 Dec 2010 11:27:34 + >> >> Revision: http://svn.php.net/viewvc?view=revision&revision=306077 >> >> Log: >> Removed compile time dependency from ext/mbstring >> >> Changed paths: >> U php/php-src/trunk/NEWS >> U php/php-src/trunk/Zend/zend_compile.c >> U php/php-src/trunk/Zend/zend_globals.h >> U php/php-src/trunk/Zend/zend_multibyte.c >> U php/php-src/trunk/Zend/zend_multibyte.h >> U php/php-src/trunk/ext/exif/exif.c >> U php/php-src/trunk/ext/mbstring/mbstring.c >> U php/php-src/trunk/ext/standard/html.c >> U php/php-src/trunk/main/rfc1867.c >> U php/php-src/trunk/main/rfc1867.h >> A php/php-src/trunk/tests/basic/028.phpt >> A php/php-src/trunk/tests/basic/029.phpt >> >> >> -- >> PHP CVS Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> > -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] svn: /php/php-src/trunk/ NEWS Zend/zend_compile.c Zend/zend_globals.h Zend/zend_multibyte.c Zend/zend_multibyte.h ext/exif/exif.c ext/mbstring/mbstring.c ext/standard/html.c main/rfc1867
I was thinking that this is rather a *big* change, so we'd better roll our patches into one and commit it altogether. I am fine if that works for anyone else. Regards, Moriyoshi On Thu, Dec 9, 2010 at 6:11 PM, Dmitry Stogov wrote: > Hi Moriyoshi, > > Ops, sorry. I didn't understand your disagreement, and I didn't see any > other objections. So I committed the patch as it was planned. Could you > prepare a patch on top of this one? > > I'm also going to look into your recommendation of moving > mbstring.script_encoding into zend.script_encoding instead of > zend.multibyte. > > Thanks. Dmitry. > > On 12/09/2010 09:02 AM, Moriyoshi Koizumi wrote: >> >> Please revert. >> >> On Thu, Dec 9, 2010 at 3:00 PM, Moriyoshi Koizumi wrote: >>> >>> Hey, I don't think there was agreement on this yet. I've actually >>> been preparing a patch that minimizes the extra hook points in SAPI. >>> >>> Moriyoshi >>> >>> On Wed, Dec 8, 2010 at 8:27 PM, Dmitry Stogov wrote: >>>> >>>> dmitry Wed, 08 Dec 2010 11:27:34 + >>>> >>>> Revision: http://svn.php.net/viewvc?view=revision&revision=306077 >>>> >>>> Log: >>>> Removed compile time dependency from ext/mbstring >>>> >>>> Changed paths: >>>> U php/php-src/trunk/NEWS >>>> U php/php-src/trunk/Zend/zend_compile.c >>>> U php/php-src/trunk/Zend/zend_globals.h >>>> U php/php-src/trunk/Zend/zend_multibyte.c >>>> U php/php-src/trunk/Zend/zend_multibyte.h >>>> U php/php-src/trunk/ext/exif/exif.c >>>> U php/php-src/trunk/ext/mbstring/mbstring.c >>>> U php/php-src/trunk/ext/standard/html.c >>>> U php/php-src/trunk/main/rfc1867.c >>>> U php/php-src/trunk/main/rfc1867.h >>>> A php/php-src/trunk/tests/basic/028.phpt >>>> A php/php-src/trunk/tests/basic/029.phpt >>>> >>>> >>>> -- >>>> PHP CVS Mailing List (http://www.php.net/) >>>> To unsubscribe, visit: http://www.php.net/unsub.php >>>> >>> > > -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/ext/mbstring/ mbstring.c
moriyoshiSun, 19 Dec 2010 17:28:57 + Revision: http://svn.php.net/viewvc?view=revision&revision=306459 Log: WS Changed paths: U php/php-src/trunk/ext/mbstring/mbstring.c Modified: php/php-src/trunk/ext/mbstring/mbstring.c === --- php/php-src/trunk/ext/mbstring/mbstring.c 2010-12-19 17:25:12 UTC (rev 306458) +++ php/php-src/trunk/ext/mbstring/mbstring.c 2010-12-19 17:28:57 UTC (rev 306459) @@ -558,7 +558,7 @@ /* {{{ zend_module_entry mbstring_module_entry */ zend_module_entry mbstring_module_entry = { -STANDARD_MODULE_HEADER, + STANDARD_MODULE_HEADER, "mbstring", mbstring_functions, PHP_MINIT(mbstring), @@ -566,11 +566,11 @@ PHP_RINIT(mbstring), PHP_RSHUTDOWN(mbstring), PHP_MINFO(mbstring), -NO_VERSION_YET, -PHP_MODULE_GLOBALS(mbstring), -PHP_GINIT(mbstring), -PHP_GSHUTDOWN(mbstring), -NULL, + NO_VERSION_YET, + PHP_MODULE_GLOBALS(mbstring), + PHP_GINIT(mbstring), + PHP_GSHUTDOWN(mbstring), + NULL, STANDARD_MODULE_PROPERTIES_EX }; /* }}} */ @@ -2899,7 +2899,7 @@ if (_from_encodings) { list = NULL; size = 0; - php_mb_parse_encoding_list(_from_encodings, strlen(_from_encodings), &list, &size, 0 TSRMLS_CC); + php_mb_parse_encoding_list(_from_encodings, strlen(_from_encodings), &list, &size, 0 TSRMLS_CC); if (size == 1) { from_encoding = *list; string.no_encoding = from_encoding->no_encoding; @@ -3948,9 +3948,9 @@ mbfl_string orig_str, conv_str; mbfl_string *pstr; /* pointer to mbfl string for return value */ enum mbfl_no_encoding - tran_cs,/* transfar text charset */ - head_enc, /* header transfar encoding */ - body_enc; /* body transfar encoding */ + tran_cs,/* transfar text charset */ + head_enc, /* header transfar encoding */ + body_enc; /* body transfar encoding */ mbfl_memory_device device; /* automatic allocateable buffer for additional header */ const mbfl_language *lang; int err = 0; @@ -3958,7 +3958,7 @@ smart_str *s; extern void mbfl_memory_device_unput(mbfl_memory_device *device); char *pp, *ee; - + /* initialize */ mbfl_memory_device_init(&device, 0, 0); mbfl_string_init(&orig_str); @@ -4057,15 +4057,15 @@ /* To: */ if (to != NULL) { -if (to_len > 0) { -to_r = estrndup(to, to_len); -for (; to_len; to_len--) { -if (!isspace((unsigned char) to_r[to_len - 1])) { -break; -} -to_r[to_len - 1] = '\0'; -} -for (i = 0; to_r[i]; i++) { + if (to_len > 0) { + to_r = estrndup(to, to_len); + for (; to_len; to_len--) { + if (!isspace((unsigned char) to_r[to_len - 1])) { + break; + } + to_r[to_len - 1] = '\0'; + } + for (i = 0; to_r[i]; i++) { if (iscntrl((unsigned char) to_r[i])) { /* According to RFC 822, section 3.1.1 long headers may be separated into * parts using CRLF followed at least one linear-white-space character ('\t' or ' '). @@ -4075,11 +4075,11 @@ SKIP_LONG_HEADER_SEP_MBSTRING(to_r, i); to_r[i] = ' '; } -} -} else { -to_r = to; -} -} else { + } + } else { + to_r = to; + } + } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing To: field"); err = 1; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_multibyte.c
moriyoshiSun, 19 Dec 2010 17:29:21 + Revision: http://svn.php.net/viewvc?view=revision&revision=306460 Log: WS Changed paths: U php/php-src/trunk/Zend/zend_multibyte.c Modified: php/php-src/trunk/Zend/zend_multibyte.c === --- php/php-src/trunk/Zend/zend_multibyte.c 2010-12-19 17:28:57 UTC (rev 306459) +++ php/php-src/trunk/Zend/zend_multibyte.c 2010-12-19 17:29:21 UTC (rev 306460) @@ -32,7 +32,7 @@ static const char *dummy_encoding_name_getter(const zend_encoding *encoding) { -return NULL; + return NULL; } static int dummy_encoding_lexer_compatibility_checker(const zend_encoding *encoding) @@ -66,9 +66,9 @@ } static zend_multibyte_functions multibyte_functions = { -NULL, + NULL, dummy_encoding_fetcher, -dummy_encoding_name_getter, + dummy_encoding_name_getter, dummy_encoding_lexer_compatibility_checker, dummy_encoding_detector, dummy_encoding_converter, @@ -120,7 +120,7 @@ ZEND_API const zend_multibyte_functions *zend_multibyte_get_functions(TSRMLS_D) { -return multibyte_functions.provider_name ? &multibyte_functions: NULL; + return multibyte_functions.provider_name ? &multibyte_functions: NULL; } ZEND_API const zend_encoding *zend_multibyte_fetch_encoding(const char *name TSRMLS_DC) @@ -216,11 +216,11 @@ ZEND_API size_t zend_multibyte_internal_encoding_filter(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC) { -const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding(TSRMLS_C); + const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding(TSRMLS_C); const zend_encoding *script_encoding = LANG_SCNG(script_encoding); -if (!internal_encoding || !zend_multibyte_check_lexer_compatibility(internal_encoding)) { + if (!internal_encoding || !zend_multibyte_check_lexer_compatibility(internal_encoding)) { internal_encoding = zend_multibyte_encoding_utf8; -} + } if (!zend_multibyte_check_lexer_compatibility(script_encoding)) { script_encoding = zend_multibyte_encoding_utf8; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_multibyte.c
moriyoshiMon, 20 Dec 2010 03:11:41 + Revision: http://svn.php.net/viewvc?view=revision&revision=306485 Log: - Fix a bug that the script gets wrongly converted into UTF-8 when the script encoding is not GL-safe. Changed paths: U php/php-src/trunk/Zend/zend_multibyte.c Modified: php/php-src/trunk/Zend/zend_multibyte.c === --- php/php-src/trunk/Zend/zend_multibyte.c 2010-12-20 02:19:31 UTC (rev 306484) +++ php/php-src/trunk/Zend/zend_multibyte.c 2010-12-20 03:11:41 UTC (rev 306485) @@ -217,15 +217,11 @@ ZEND_API size_t zend_multibyte_internal_encoding_filter(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC) { const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding(TSRMLS_C); - const zend_encoding *script_encoding = LANG_SCNG(script_encoding); if (!internal_encoding || !zend_multibyte_check_lexer_compatibility(internal_encoding)) { internal_encoding = zend_multibyte_encoding_utf8; } - if (!zend_multibyte_check_lexer_compatibility(script_encoding)) { - script_encoding = zend_multibyte_encoding_utf8; - } return zend_multibyte_encoding_converter(to, to_length, from, from_length, -script_encoding, internal_encoding TSRMLS_CC); +LANG_SCNG(script_encoding), internal_encoding TSRMLS_CC); } /* -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_language_scanner.h zend_language_scanner.l
moriyoshiMon, 20 Dec 2010 03:16:09 + Revision: http://svn.php.net/viewvc?view=revision&revision=306486 Log: - Avoid allocating extra buffers. This makes parsing with zend.multibyte enabled as fast as with it disabled. Changed paths: U php/php-src/trunk/Zend/zend_language_scanner.h U php/php-src/trunk/Zend/zend_language_scanner.l Modified: php/php-src/trunk/Zend/zend_language_scanner.h === --- php/php-src/trunk/Zend/zend_language_scanner.h 2010-12-20 03:11:41 UTC (rev 306485) +++ php/php-src/trunk/Zend/zend_language_scanner.h 2010-12-20 03:16:09 UTC (rev 306486) @@ -56,9 +56,7 @@ ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state TSRMLS_DC); ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC); ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_DC); -ZEND_API int zend_multibyte_read_script(unsigned char *buf, size_t n TSRMLS_DC); ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, zend_encoding *old_encoding TSRMLS_DC); -ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, size_t len TSRMLS_DC); ZEND_API int zend_multibyte_set_filter(const zend_encoding *onetime_encoding TSRMLS_DC); END_EXTERN_C() Modified: php/php-src/trunk/Zend/zend_language_scanner.l === --- php/php-src/trunk/Zend/zend_language_scanner.l 2010-12-20 03:11:41 UTC (rev 306485) +++ php/php-src/trunk/Zend/zend_language_scanner.l 2010-12-20 03:16:09 UTC (rev 306486) @@ -207,10 +207,6 @@ CG(zend_lineno) = lex_state->lineno; zend_restore_compiled_filename(lex_state->filename TSRMLS_CC); - if (SCNG(script_org)) { - efree(SCNG(script_org)); - SCNG(script_org) = NULL; - } if (SCNG(script_filtered)) { efree(SCNG(script_filtered)); SCNG(script_filtered) = NULL; @@ -462,31 +458,23 @@ if (size != -1) { if (CG(multibyte)) { - if (zend_multibyte_read_script((unsigned char *)buf, size TSRMLS_CC) != 0) { -return FAILURE; - } + SCNG(script_org) = buf; + SCNG(script_org_size) = n; + SCNG(script_filtered) = NULL; - SCNG(yy_in) = NULL; - zend_multibyte_set_filter(NULL TSRMLS_CC); - if (!SCNG(input_filter)) { -SCNG(script_filtered) = (unsigned char*)emalloc(SCNG(script_org_size)+1); -memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1); -SCNG(script_filtered_size) = SCNG(script_org_size); - } else { -SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC); -if (SCNG(script_filtered) == NULL) { + if (SCNG(input_filter)) { +if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC)) { zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected " "encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding))); } +buf = SCNG(script_filtered); +size = SCNG(script_filtered_size); } - SCNG(yy_start) = SCNG(script_filtered) - offset; - yy_scan_buffer((char *)SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC); - } else { - SCNG(yy_start) = (unsigned char *)buf - offset; - yy_scan_buffer(buf, size TSRMLS_CC); } + SCNG(yy_start) = (unsigned char *)buf - offset; + yy_scan_buffer(buf, size TSRMLS_CC); } else { zend_error_noreturn(E_COMPILE_ERROR, "zend_stream_mmap() failed"); } @@ -615,6 +603,9 @@ ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_DC) { + char *buf; + size_t size; + /* enforce two trailing NULLs for flex... */ if (IS_INTERNED(str->value.str.val)) { char *tmp = safe_emalloc(1, str->value.str.len, ZEND_MMAP_AHEAD); @@ -626,28 +617,31 @@ memset(str->value.str.val + str->value.str.len, 0, ZEND_MMAP_AHEAD); - SCNG(yy_in)=NULL; + SCNG(yy_in) = NULL; SCNG(yy_start) = NULL; + buf = str->value.str.val; + size = str->value.str.len; + if (CG(multibyte)) { - SCNG(script_org) = (unsigned char *)estrdup(str->value.str.val); - SCNG(script_org_size) = str->value.str.len; + SCNG(script_org) = buf; + SCNG(script_org_size) = size; + SCNG(script_filtered) = NULL; zend_multibyte_set_filter(zend_multibyte_get_internal_encoding(TSRMLS_C) TSRMLS_CC); - if (!SCNG(input_filter)) { - SCNG(script_filtered) = (unsigned char*)emalloc(SCNG(script_org_size)+1); - memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1); - SCNG(script_filtered_size) = SCNG(script_org_size); - } else { - SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC); + if (SCNG(input_filter)) { + if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script
[PHP-CVS] svn: /php/php-src/trunk/ php.ini-development php.ini-production
moriyoshiTue, 21 Dec 2010 06:57:46 + Revision: http://svn.php.net/viewvc?view=revision&revision=306535 Log: - Update ini descriptions. It is still possible that zend.multibyte will be removed in the near future as it is confirmed to not impose any significant overhead with the standard configuration even when it is enabled. Changed paths: U php/php-src/trunk/php.ini-development U php/php-src/trunk/php.ini-production Modified: php/php-src/trunk/php.ini-development === --- php/php-src/trunk/php.ini-development 2010-12-21 05:49:13 UTC (rev 306534) +++ php/php-src/trunk/php.ini-development 2010-12-21 06:57:46 UTC (rev 306535) @@ -352,6 +352,18 @@ ; http://php.net/realpath-cache-ttl ;realpath_cache_ttl = 120 +; If enabled, scripts may be written in encodings that are incompatible with +; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such +; encodings. To use this feature, mbstring extension must be enabled. +; Default: Off +;zend.multibyte = Off + +; Allows to set the default encoding for the scripts. This value will be used +; unless "declare(encoding=...)" directive appears at the top of the script. +; Only affects if zend.multibyte is set. +; Default: "" +;zend.script_encoding = + ; ; Miscellaneous ; ; @@ -1734,10 +1746,6 @@ ; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml) ;mbstring.http_output_conv_mimetype= -; Allows to set script encoding. Only affects if PHP is compiled with --enable-zend-multibyte -; Default: "" -;mbstring.script_encoding= - [gd] ; Tell the jpeg decode to ignore warnings and try to create ; a gd image. The warning will then be displayed as notices Modified: php/php-src/trunk/php.ini-production === --- php/php-src/trunk/php.ini-production2010-12-21 05:49:13 UTC (rev 306534) +++ php/php-src/trunk/php.ini-production2010-12-21 06:57:46 UTC (rev 306535) @@ -352,6 +352,18 @@ ; http://php.net/realpath-cache-ttl ;realpath_cache_ttl = 120 +; If enabled, scripts may be written in encodings that are incompatible with +; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such +; encodings. To use this feature, mbstring extension must be enabled. +; Default: Off +;zend.multibyte = Off + +; Allows to set the default encoding for the scripts. This value will be used +; unless "declare(encoding=...)" directive appears at the top of the script. +; Only affects if zend.multibyte is set. +; Default: "" +;zend.script_encoding = + ; ; Miscellaneous ; ; @@ -1730,10 +1742,6 @@ ; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml) ;mbstring.http_output_conv_mimetype= -; Allows to set script encoding. Only affects if PHP is compiled with --enable-zend-multibyte -; Default: "" -;mbstring.script_encoding= - [gd] ; Tell the jpeg decode to ignore warnings and try to create ; a gd image. The warning will then be displayed as notices -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] svn: /php/php-src/trunk/ Zend/zend.c Zend/zend_compile.c Zend/zend_globals.h Zend/zend_language_scanner.c Zend/zend_language_scanner.h Zend/zend_language_scanner.l Zend/zend_language_sca
Okay, I'm gonna take a look into it. Thanks. Moriyoshi On Tue, Dec 21, 2010 at 10:39 PM, Antony Dovgal wrote: > To reproduce, use the following configure line: > ./configure --enable-exif > > On 12/21/2010 12:34 PM, Antony Dovgal wrote: >> ext/exif doesn't compile after this patch because of this: >> >> ext/exif/exif.o: In function `OnUpdateEncode': >> /local/qa/HEAD_non-ZTS/ext/exif/exif.c:169: undefined reference to >> `zend_multibyte_check_encoding_list' >> ext/exif/exif.o: In function `OnUpdateDecode': >> /local/qa/HEAD_non-ZTS/ext/exif/exif.c:178: undefined reference to >> `zend_multibyte_check_encoding_list' >> >> And if I change the code to use zend_multibyte_fetch_encoding(), the error >> messages are back: >> ./sapi/cli/php -v >> PHP Warning: PHP Startup: Illegal encoding ignored: 'ISO-8859-15' in >> Unknown on line 0 >> PHP Warning: PHP Startup: Illegal encoding ignored: 'UCS-2BE' in Unknown on >> line 0 >> PHP Warning: PHP Startup: Illegal encoding ignored: 'UCS-2LE' in Unknown on >> line 0 >> PHP Warning: PHP Startup: Illegal encoding ignored: 'JIS' in Unknown on >> line 0 >> PHP Warning: PHP Startup: Illegal encoding ignored: 'JIS' in Unknown on >> line 0 >> PHP 5.3.99-dev (cli) (built: Dec 21 2010 00:21:28) (DEBUG) >> Copyright (c) 1997-2010 The PHP Group >> Zend Engine v2.4.0, Copyright (c) 1998-2010 Zend Technologies > > -- > Wbr, > Antony Dovgal > --- > http://pinba.org - realtime statistics for PHP > -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/ext/exif/ exif.c
moriyoshiWed, 22 Dec 2010 10:25:33 + Revision: http://svn.php.net/viewvc?view=revision&revision=306572 Log: - Fix build. Changed paths: U php/php-src/trunk/ext/exif/exif.c Modified: php/php-src/trunk/ext/exif/exif.c === --- php/php-src/trunk/ext/exif/exif.c 2010-12-22 06:50:39 UTC (rev 306571) +++ php/php-src/trunk/ext/exif/exif.c 2010-12-22 10:25:33 UTC (rev 306572) @@ -166,18 +166,30 @@ ZEND_INI_MH(OnUpdateEncode) { - if (new_value && strlen(new_value) && !zend_multibyte_check_encoding_list(new_value TSRMLS_CC)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored: '%s'", new_value); - return FAILURE; + if (new_value && new_value_length) { + const zend_encoding **return_list; + size_t return_size; + if (FAILURE == zend_multibyte_parse_encoding_list(new_value, new_value_length, + &return_list, &return_size, 0 TSRMLS_CC)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored: '%s'", new_value); + return FAILURE; + } + efree(return_list); } return OnUpdateString(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC); } ZEND_INI_MH(OnUpdateDecode) { - if (!zend_multibyte_check_encoding_list(new_value TSRMLS_CC)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored: '%s'", new_value); - return FAILURE; + if (new_value) { + const zend_encoding **return_list; + size_t return_size; + if (FAILURE == zend_multibyte_parse_encoding_list(new_value, new_value_length, + &return_list, &return_size, 0 TSRMLS_CC)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Illegal encoding ignored: '%s'", new_value); + return FAILURE; + } + efree(return_list); } return OnUpdateString(entry, new_value, new_value_length, mh_arg1, mh_arg2, mh_arg3, stage TSRMLS_CC); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/Zend/ zend_multibyte.c
moriyoshiFri, 24 Dec 2010 08:42:21 + Revision: http://svn.php.net/viewvc?view=revision&revision=306613 Log: - Fix startup warnings. Changed paths: U php/php-src/trunk/Zend/zend_multibyte.c Modified: php/php-src/trunk/Zend/zend_multibyte.c === --- php/php-src/trunk/Zend/zend_multibyte.c 2010-12-24 08:38:27 UTC (rev 306612) +++ php/php-src/trunk/Zend/zend_multibyte.c 2010-12-24 08:42:21 UTC (rev 306613) @@ -52,7 +52,9 @@ static int dummy_encoding_list_parser(const char *encoding_list, size_t encoding_list_len, const zend_encoding ***return_list, size_t *return_size, int persistent TSRMLS_DC) { - return FAILURE; + *return_list = pemalloc(0, persistent); + return_size = 0; + return SUCCESS; } static const zend_encoding *dummy_internal_encoding_getter(TSRMLS_D) -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/win32/build/ Makefile config.w32
moriyoshiWed, 02 Mar 2011 05:22:22 + Revision: http://svn.php.net/viewvc?view=revision&revision=308839 Log: - Enable windows build system to accept paths containing spaces. Changed paths: U php/php-src/trunk/win32/build/Makefile U php/php-src/trunk/win32/build/config.w32 Modified: php/php-src/trunk/win32/build/Makefile === --- php/php-src/trunk/win32/build/Makefile 2011-03-02 03:59:38 UTC (rev 308838) +++ php/php-src/trunk/win32/build/Makefile 2011-03-02 05:22:22 UTC (rev 308839) @@ -93,7 +93,7 @@ @cd $(BUILD_DIR) @for %D in ($(BUILD_DIRS_SUB)) do @if not exist %D @mkdir %D > NUL @if not exist $(BUILD_DIR_DEV) @mkdir $(BUILD_DIR_DEV) > NUL - @cd $(PHP_SRC_DIR) + @cd "$(PHP_SRC_DIR)" clean-sapi: @@ -107,7 +107,7 @@ @echo Cleaning distribution build dirs @cd $(BUILD_DIR) @for %D in (_x $(BUILD_DIRS_SUB)) do @if exist %D @del /F /Q %D\*.* > NUL - @cd $(PHP_SRC_DIR) + @cd "$(PHP_SRC_DIR)" -@del /F /Q $(BUILD_DIR)\*.res $(BUILD_DIR)\*.lib $(BUILD_DIR)\*.ilk $(BUILD_DIR)\*.pdb $(BUILD_DIR)\*.exp $(PHPDEF) $(BUILD_DIR)\php-$(PHP_VERSION_STRING)-Win32.zip $(BUILD_DIR)\pecl-$(PHP_VERSION_STRING)-Win32.zip > NUL -rd /s /q $(BUILD_DIR)\php-$(PHP_VERSION_STRING) @@ -119,7 +119,7 @@ @echo Cleaning standard build dirs @cd $(BUILD_DIR) @for %D in (_x $(BUILD_DIRS_SUB)) do @if exist %D @rd /s /q %D - @cd $(PHP_SRC_DIR) + @cd "$(PHP_SRC_DIR)" -@del /f /q $(BUILD_DIR)\*.res $(BUILD_DIR)\*.lib $(BUILD_DIR)\*.ilk $(BUILD_DIR)\*.pdb $(BUILD_DIR)\*.exp $(PHPDEF) $(BUILD_DIR)\*.rc $(BUILD_DIR)\*.dbg $(BUILD_DIR)\*.bin $(BUILD_DIR)\php*.dll $(BUILD_DIR)\php*.exe > NUL test: Modified: php/php-src/trunk/win32/build/config.w32 === --- php/php-src/trunk/win32/build/config.w322011-03-02 03:59:38 UTC (rev 308838) +++ php/php-src/trunk/win32/build/config.w322011-03-02 05:22:22 UTC (rev 308839) @@ -271,7 +271,7 @@ var php_usual_lib_suspects = PHP_PHP_BUILD+"\\lib"; ADD_FLAG("CFLAGS", '/I "' + php_usual_include_suspects + '" '); -ADD_FLAG("LDFLAGS", '/libpath:"\\"' + php_usual_lib_suspects + '\\"" '); +ADD_FLAG("LDFLAGS", '/libpath:"' + php_usual_lib_suspects + '" '); // Poke around for some headers function probe_basic_headers() -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/branches/PHP_5_3/win32/build/ Makefile config.w32
moriyoshiWed, 02 Mar 2011 18:35:10 + Revision: http://svn.php.net/viewvc?view=revision&revision=308863 Log: - Merge from trunk. Changed paths: U php/php-src/branches/PHP_5_3/win32/build/Makefile U php/php-src/branches/PHP_5_3/win32/build/config.w32 Modified: php/php-src/branches/PHP_5_3/win32/build/Makefile === --- php/php-src/branches/PHP_5_3/win32/build/Makefile 2011-03-02 18:08:27 UTC (rev 308862) +++ php/php-src/branches/PHP_5_3/win32/build/Makefile 2011-03-02 18:35:10 UTC (rev 308863) @@ -93,7 +93,7 @@ @cd $(BUILD_DIR) @for %D in ($(BUILD_DIRS_SUB)) do @if not exist %D @mkdir %D > NUL @if not exist $(BUILD_DIR_DEV) @mkdir $(BUILD_DIR_DEV) > NUL - @cd $(PHP_SRC_DIR) + @cd "$(PHP_SRC_DIR)" clean-sapi: @@ -107,7 +107,7 @@ @echo Cleaning distribution build dirs @cd $(BUILD_DIR) @for %D in (_x $(BUILD_DIRS_SUB)) do @if exist %D @del /F /Q %D\*.* > NUL - @cd $(PHP_SRC_DIR) + @cd "$(PHP_SRC_DIR)" -@del /F /Q $(BUILD_DIR)\*.res $(BUILD_DIR)\*.lib $(BUILD_DIR)\*.ilk $(BUILD_DIR)\*.pdb $(BUILD_DIR)\*.exp $(PHPDEF) $(BUILD_DIR)\php-$(PHP_VERSION_STRING)-Win32.zip $(BUILD_DIR)\pecl-$(PHP_VERSION_STRING)-Win32.zip > NUL -rd /s /q $(BUILD_DIR)\php-$(PHP_VERSION_STRING) @@ -119,7 +119,7 @@ @echo Cleaning standard build dirs @cd $(BUILD_DIR) @for %D in (_x $(BUILD_DIRS_SUB)) do @if exist %D @rd /s /q %D - @cd $(PHP_SRC_DIR) + @cd "$(PHP_SRC_DIR)" -@del /f /q $(BUILD_DIR)\*.res $(BUILD_DIR)\*.lib $(BUILD_DIR)\*.ilk $(BUILD_DIR)\*.pdb $(BUILD_DIR)\*.exp $(PHPDEF) $(BUILD_DIR)\*.rc $(BUILD_DIR)\*.dbg $(BUILD_DIR)\*.bin $(BUILD_DIR)\php*.dll $(BUILD_DIR)\php*.exe > NUL test: Modified: php/php-src/branches/PHP_5_3/win32/build/config.w32 === --- php/php-src/branches/PHP_5_3/win32/build/config.w32 2011-03-02 18:08:27 UTC (rev 308862) +++ php/php-src/branches/PHP_5_3/win32/build/config.w32 2011-03-02 18:35:10 UTC (rev 308863) @@ -266,7 +266,7 @@ var php_usual_lib_suspects = PHP_PHP_BUILD+"\\lib"; ADD_FLAG("CFLAGS", '/I "' + php_usual_include_suspects + '" '); -ADD_FLAG("LDFLAGS", '/libpath:"\\"' + php_usual_lib_suspects + '\\"" '); +ADD_FLAG("LDFLAGS", '/libpath:"' + php_usual_lib_suspects + '" '); // Poke around for some headers function probe_basic_headers() -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] svn: /php/php-src/trunk/win32/build/ Makefile config.w32
Hi, On Wed, Mar 2, 2011 at 5:58 PM, Pierre Joye wrote: > hi, > > Please merge to 5.3 Done. > > On Wed, Mar 2, 2011 at 6:22 AM, Moriyoshi Koizumi wrote: >> moriyoshi Wed, 02 Mar 2011 05:22:22 + > >> Modified: php/php-src/trunk/win32/build/config.w32 >> === >> --- php/php-src/trunk/win32/build/config.w32 2011-03-02 03:59:38 UTC (rev >> 308838) >> +++ php/php-src/trunk/win32/build/config.w32 2011-03-02 05:22:22 UTC (rev >> 308839) >> @@ -271,7 +271,7 @@ >> var php_usual_lib_suspects = PHP_PHP_BUILD+"\\lib"; >> >> ADD_FLAG("CFLAGS", '/I "' + php_usual_include_suspects + '" '); >> -ADD_FLAG("LDFLAGS", '/libpath:"\\"' + php_usual_lib_suspects + '\\"" '); >> +ADD_FLAG("LDFLAGS", '/libpath:"' + php_usual_lib_suspects + '" '); > > Why this change? The library path needs to be quoted just once. It appears old compiler frontends (VC6, 7?) used to have a bug with which arguments to the linker containing whitespaces weren't properly dealt with. Regards, Moriyoshi > > Cheers, > -- > Pierre > > @pierrejoye | http://blog.thepimp.net | http://www.libgd.org > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] svn: /php/php-src/trunk/win32/build/ Makefile config.w32
On Thu, Mar 3, 2011 at 3:42 AM, Pierre Joye wrote: > hi, > > On Wed, Mar 2, 2011 at 7:35 PM, Moriyoshi Koizumi wrote: >> The library path needs to be quoted just once. It appears old compiler >> frontends (VC6, 7?) used to have a bug with which arguments to the >> linker containing whitespaces weren't properly dealt with. > > Did you test this specific change with VC6? Not yet, but trunk only supports VC9 or later versions. Is it really necessary for 5.3 to support VC6? Regards, Moriyoshi > > Cheers > -- > Pierre > > @pierrejoye | http://blog.thepimp.net | http://www.libgd.org > -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/ ext/mbstring/mbstring.c main/rfc1867.c
moriyoshiSun, 06 Mar 2011 07:06:55 + Revision: http://svn.php.net/viewvc?view=revision&revision=308951 Log: Fix ZTS build. Changed paths: U php/php-src/trunk/ext/mbstring/mbstring.c U php/php-src/trunk/main/rfc1867.c Modified: php/php-src/trunk/ext/mbstring/mbstring.c === --- php/php-src/trunk/ext/mbstring/mbstring.c 2011-03-06 07:00:30 UTC (rev 308950) +++ php/php-src/trunk/ext/mbstring/mbstring.c 2011-03-06 07:06:55 UTC (rev 308951) @@ -1132,14 +1132,14 @@ char quote = *str; str++; - return php_mb_rfc1867_substring_conf(encoding, str, strlen(str), quote); + return php_mb_rfc1867_substring_conf(encoding, str, strlen(str), quote TSRMLS_CC); } else { char *strend = str; while (*strend && !isspace(*(unsigned char *)strend)) { ++strend; } - return php_mb_rfc1867_substring_conf(encoding, str, strend - str, 0); + return php_mb_rfc1867_substring_conf(encoding, str, strend - str, 0 TSRMLS_CC); } } /* }}} */ @@ -1154,8 +1154,8 @@ * the full path of the file on the user's filesystem, which means that unless * the user does basename() they get a bogus file name. Until IE's user base drops * to nill or problem is fixed this code must remain enabled for all systems. */ - s = php_mb_safe_strrchr_ex(filename, '\\', filename_len, (const mbfl_encoding *)encoding TSRMLS_CC); - if ((tmp = php_mb_safe_strrchr_ex(filename, '/', filename_len, (const mbfl_encoding *)encoding TSRMLS_CC)) > s) { + s = php_mb_safe_strrchr_ex(filename, '\\', filename_len, (const mbfl_encoding *)encoding); + if ((tmp = php_mb_safe_strrchr_ex(filename, '/', filename_len, (const mbfl_encoding *)encoding)) > s) { s = tmp; } if (s) { Modified: php/php-src/trunk/main/rfc1867.c === --- php/php-src/trunk/main/rfc1867.c2011-03-06 07:00:30 UTC (rev 308950) +++ php/php-src/trunk/main/rfc1867.c2011-03-06 07:06:55 UTC (rev 308951) @@ -743,7 +743,7 @@ } /* Initialize the buffer */ - if (!(mbuff = multipart_buffer_new(boundary, boundary_len))) { + if (!(mbuff = multipart_buffer_new(boundary, boundary_len TSRMLS_CC))) { sapi_module.sapi_error(E_WARNING, "Unable to initialize the input buffer"); return; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/config.m4 branches/PHP_5_4/sapi/cli/config.w32 branches/PHP_5_4/sapi/cli/php_cli.c branches/PHP_5_4/sapi/cli/php_cli_server.c branches/PHP_5_4/sa
moriyoshiMon, 20 Jun 2011 20:27:39 + Revision: http://svn.php.net/viewvc?view=revision&revision=312344 Log: - Add built-in web server to CLI SAPI. See the RFC for detail. Changed paths: U php/php-src/branches/PHP_5_4/sapi/cli/config.m4 U php/php-src/branches/PHP_5_4/sapi/cli/config.w32 U php/php-src/branches/PHP_5_4/sapi/cli/php_cli.c A php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c A php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.h A php/php-src/branches/PHP_5_4/sapi/cli/php_http_parser.c A php/php-src/branches/PHP_5_4/sapi/cli/php_http_parser.h U php/php-src/trunk/sapi/cli/config.m4 U php/php-src/trunk/sapi/cli/config.w32 U php/php-src/trunk/sapi/cli/php_cli.c A php/php-src/trunk/sapi/cli/php_cli_server.c A php/php-src/trunk/sapi/cli/php_cli_server.h A php/php-src/trunk/sapi/cli/php_http_parser.c A php/php-src/trunk/sapi/cli/php_http_parser.h -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/NEWS branches/PHP_5_4/main/network.c branches/PHP_5_4/main/php_main.h branches/PHP_5_4/main/php_network.h trunk/main/network.c trunk/main/php_main.h trunk
moriyoshiMon, 20 Jun 2011 20:30:36 + Revision: http://svn.php.net/viewvc?view=revision&revision=312345 Log: - Forgot to commit these. Changed paths: U php/php-src/branches/PHP_5_4/NEWS U php/php-src/branches/PHP_5_4/main/network.c U php/php-src/branches/PHP_5_4/main/php_main.h U php/php-src/branches/PHP_5_4/main/php_network.h U php/php-src/trunk/main/network.c U php/php-src/trunk/main/php_main.h U php/php-src/trunk/main/php_network.h Modified: php/php-src/branches/PHP_5_4/NEWS === --- php/php-src/branches/PHP_5_4/NEWS 2011-06-20 20:27:39 UTC (rev 312344) +++ php/php-src/branches/PHP_5_4/NEWS 2011-06-20 20:30:36 UTC (rev 312345) @@ -112,15 +112,17 @@ instruction without previous ZEND_FETCH_CLASS. . zend_stack and zend_ptr_stack allocation is delayed until actual usage. -- Improved CLI SAPI: (Johannes) +- Improved CLI SAPI: (Johannes, Moriyoshi) . Added command line option --rz which shows information of the -named Zend extension. - . Interactive readline shell improvements: +named Zend extension. (Johannes) + . Interactive readline shell improvements: (Johannes) . Added "cli.pager" php.ini setting to set a pager for output. . Added "cli.prompt" php.ini setting to configure the shell prompt. . Added shortcut #inisetting=value to change ini settings at run-time. . Changed shell not to terminate on fatal errors. . Interactive shell works with shared readline extension. FR #53878. + . Added built-in web server that is intended for testing purpose. +(Moriyoshi) - Improved FastCGI SAPI: (Dmitry) . Added apache compatible functions: apache_child_terminate(), Modified: php/php-src/branches/PHP_5_4/main/network.c === --- php/php-src/branches/PHP_5_4/main/network.c 2011-06-20 20:27:39 UTC (rev 312344) +++ php/php-src/branches/PHP_5_4/main/network.c 2011-06-20 20:30:36 UTC (rev 312345) @@ -148,7 +148,7 @@ /* {{{ php_network_freeaddresses */ -static void php_network_freeaddresses(struct sockaddr **sal) +PHPAPI void php_network_freeaddresses(struct sockaddr **sal) { struct sockaddr **sap; @@ -163,7 +163,7 @@ /* {{{ php_network_getaddresses * Returns number of addresses, 0 for none/error */ -static int php_network_getaddresses(const char *host, int socktype, struct sockaddr ***sal, char **error_string TSRMLS_DC) +PHPAPI int php_network_getaddresses(const char *host, int socktype, struct sockaddr ***sal, char **error_string TSRMLS_DC) { struct sockaddr **sap; int n; Modified: php/php-src/branches/PHP_5_4/main/php_main.h === --- php/php-src/branches/PHP_5_4/main/php_main.h2011-06-20 20:27:39 UTC (rev 312344) +++ php/php-src/branches/PHP_5_4/main/php_main.h2011-06-20 20:30:36 UTC (rev 312345) @@ -35,6 +35,7 @@ PHPAPI void php_module_shutdown_for_exec(void); PHPAPI int php_module_shutdown_wrapper(sapi_module_struct *sapi_globals); PHPAPI int php_request_startup_for_hook(TSRMLS_D); +PHPAPI void php_request_shutdown_for_hook(void *dummy); PHPAPI int php_register_extensions(zend_module_entry **ptr, int count TSRMLS_DC); Modified: php/php-src/branches/PHP_5_4/main/php_network.h === --- php/php-src/branches/PHP_5_4/main/php_network.h 2011-06-20 20:27:39 UTC (rev 312344) +++ php/php-src/branches/PHP_5_4/main/php_network.h 2011-06-20 20:30:36 UTC (rev 312345) @@ -194,10 +194,12 @@ /* it is safe to FD_SET too many fd's under win32; the macro will simply ignore * descriptors that go beyond the default FD_SETSIZE */ # define PHP_SAFE_FD_SET(fd, set) FD_SET(fd, set) +# define PHP_SAFE_FD_CLR(fd, set) FD_CLR(fd, set) # define PHP_SAFE_FD_ISSET(fd, set)FD_ISSET(fd, set) # define PHP_SAFE_MAX_FD(m, n) do { if (n + 1 >= FD_SETSIZE) { _php_emit_fd_setsize_warning(n); }} while(0) #else # define PHP_SAFE_FD_SET(fd, set) do { if (fd < FD_SETSIZE) FD_SET(fd, set); } while(0) +# define PHP_SAFE_FD_CLR(fd, set) do { if (fd < FD_SETSIZE) FD_CLR(fd, set); } while(0) # define PHP_SAFE_FD_ISSET(fd, set)((fd < FD_SETSIZE) && FD_ISSET(fd, set)) # define PHP_SAFE_MAX_FD(m, n) do { if (m >= FD_SETSIZE) { _php_emit_fd_setsize_warning(m); m = FD_SETSIZE - 1; }} while(0) #endif @@ -220,6 +222,9 @@ #endif BEGIN_EXTERN_C() +PHPAPI int php_network_getaddresses(const char *host, int socktype, struct sockaddr ***sal, char **error_string TSRMLS_DC); +PHPAPI void php_network_freeaddresses(struct sockaddr **sal); + PHPAPI php_socket_t php_network_connect_socket_to_host(const char *host, unsigned short port, int socktype, int asynchronous, struct timeval *timeout, char **error_string, int *error_code,
Re: [PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/config.m4 branches/PHP_5_4/sapi/cli/config.w32 branches/PHP_5_4/sapi/cli/php_cli.c branches/PHP_5_4/sapi/cli/php_cli_server.c branches/PHP_5_
Thanks! On 2011/06/21, at 8:36, Felipe Pena wrote: > Fixed. > > 2011/6/20 Johannes Schlüter > >> Hi, >> >> On Mon, 2011-06-20 at 20:27 +, Moriyoshi Koizumi wrote: >>> moriyoshiMon, 20 Jun 2011 20:27:39 + >>> >>> Revision: http://svn.php.net/viewvc?view=revision&revision=312344 >>> >>> Log: >>> - Add built-in web server to CLI SAPI. See the RFC for detail. >> >> This broke the -d option. Causing this error on make: >> >> | Generating phar.phar >> | PEAR package PHP_Archive not installed: generated phar will require >> | PHP's phar extension be enabled. >> | Creating phar files is disabled by ini setting 'phar.readonly'. >> | make: *** [ext/phar/phar.phar] Error 1 >> >> which can be reduced to this simple test case: >> >> $ sapi/cli/php -n -d phar.readonly=0 -r 'echo ini_get("phar.readonly");' >> 1 >> >> I see that php_cli.c now handles parsing -d options before calling >> sapi_startup() whic seems to cause this. >> >> >> johannes >> >> >> >> -- >> PHP CVS Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> >> > > > -- > Regards, > Felipe Pena -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c trunk/sapi/cli/php_cli_server.c
moriyoshiTue, 19 Jul 2011 17:47:34 + Revision: http://svn.php.net/viewvc?view=revision&revision=313441 Log: - Print HTTP method as well in the log. - Print response code also when the request is processed by a script. - Those changes partly closes #55109. Bug: https://bugs.php.net/55109 (Assigned) Friendly log messages Changed paths: U php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c U php/php-src/trunk/sapi/cli/php_cli_server.c Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c === --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-19 16:17:07 UTC (rev 313440) +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-19 17:47:34 UTC (rev 313441) @@ -1479,7 +1479,7 @@ static void php_cli_server_close_connection(php_cli_server *server, php_cli_server_client *client TSRMLS_DC) /* {{{ */ { #ifdef DEBUG - php_cli_server_logf("%s: Closing" TSRMLS_CC, client->addr_str); + php_cli_server_logf("%s Closing" TSRMLS_CC, client->addr_str); #endif zend_hash_index_del(&server->clients, client->sock); } /* }}} */ @@ -1575,7 +1575,7 @@ php_cli_server_buffer_prepend(&client->content_sender.buffer, chunk); } - php_cli_server_logf("%s: %s - Sending error page (%d)" TSRMLS_CC, client->addr_str, client->request.request_uri, status); + php_cli_server_logf("%s %s %s - Sending error page (%d)" TSRMLS_CC, client->addr_str, php_http_method_str(client->request.request_method), client->request.request_uri, status); php_cli_server_poller_add(&server->poller, POLLOUT, client->sock); efree(escaped_request_uri); return SUCCESS; @@ -1612,6 +1612,8 @@ } zend_end_try(); } + php_cli_server_logf("%s %s %s - Response sent successfully (%d)" TSRMLS_CC, client->addr_str, php_http_method_str(client->request.request_method), client->request.request_uri, SG(sapi_headers).http_response_code); + php_request_shutdown(0); php_cli_server_close_connection(server, client TSRMLS_CC); destroy_request_info(&SG(request_info)); @@ -1627,10 +1629,10 @@ if (fd < 0) { char *errstr = get_last_error(); if (errstr) { - php_cli_server_logf("%s: %s - %s" TSRMLS_CC, client->addr_str, client->request.request_uri, errstr); + php_cli_server_logf("%s %s %s - %s" TSRMLS_CC, client->addr_str, php_http_method_str(client->request.request_method), client->request.request_uri, errstr); pefree(errstr, 1); } else { - php_cli_server_logf("%s: %s - ?" TSRMLS_CC, client->addr_str, client->request.request_uri); + php_cli_server_logf("%s %s %s - ?" TSRMLS_CC, client->addr_str, php_http_method_str(client->request.request_method), client->request.request_uri); } return php_cli_server_send_error_page(server, client, 404 TSRMLS_CC); } @@ -1880,12 +1882,12 @@ char *errstr = NULL; int status = php_cli_server_client_read_request(client, &errstr TSRMLS_CC); if (status < 0) { - php_cli_server_logf("%s: Invalid request (%s)" TSRMLS_CC, client->addr_str, errstr); + php_cli_server_logf("%s Invalid request (%s)" TSRMLS_CC, client->addr_str, errstr); efree(errstr); php_cli_server_close_connection(server, client TSRMLS_CC); return FAILURE; } else if (status == 1) { - php_cli_server_logf("%s: %s" TSRMLS_CC, client->addr_str, client->request.request_uri); + php_cli_server_logf("%s %s %s - Request read" TSRMLS_CC, client->addr_str, php_http_method_str(client->request.request_method), client->request.request_uri); php_cli_server_poller_remove(&server->poller, POLLIN, client->sock); php_cli_server_dispatch(server, client TSRMLS_CC); } else { @@ -1970,7 +1972,7 @@ return SUCCESS; } #ifdef DEBUG - php_cli_server_logf("%s: Accepted" TSRMLS_CC, client->addr_str); + php_cli_server_logf("%s Accepted" TSRMLS_CC, client->addr_str); #endif zend_hash_index_update(&server->clients, client_sock, &client, sizeof(client), NULL); php_cli_server_recv_event_read_request(server, client TSRMLS_CC); Modified: php/php-src/trunk/sapi/cli/php_cli_server.c === --- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-19 16:17:07 UTC (rev 313440) +++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-19 17:47:34 UTC (rev 313441) @@ -1479,7 +1479,7 @@ static void php_cli_server_close_connection(php_cli_server *server, php_cli_server_client *client T
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c trunk/sapi/cli/php_cli_server.c
moriyoshiTue, 19 Jul 2011 18:00:16 + Revision: http://svn.php.net/viewvc?view=revision&revision=313442 Log: - Buffers are local to the blocks where they belong. Changed paths: U php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c U php/php-src/trunk/sapi/cli/php_cli_server.c Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c === --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-19 17:47:34 UTC (rev 313441) +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-19 18:00:16 UTC (rev 313442) @@ -2048,6 +2048,7 @@ extern const opt_struct OPTIONS[]; const char *document_root = NULL; const char *router = NULL; + char document_root_buf[MAXPATHLEN]; while ((c = php_getopt(argc, argv, OPTIONS, &php_optarg, &php_optind, 0, 2))!=-1) { switch (c) { @@ -2062,7 +2063,6 @@ if (document_root) { struct stat sb; - char resolved_path[MAXPATHLEN]; if (stat(document_root, &sb)) { fprintf(stderr, "Directory %s does not exist.\n", document_root); @@ -2072,19 +2072,18 @@ fprintf(stderr, "%s is not a directory.\n", document_root); return 1; } - if (VCWD_REALPATH(document_root, resolved_path)) { - document_root = resolved_path; + if (VCWD_REALPATH(document_root, document_root_buf)) { + document_root = document_root_buf; } } else { - char path[MAXPATHLEN]; char *ret = NULL; #if HAVE_GETCWD - ret = VCWD_GETCWD(path, MAXPATHLEN); + ret = VCWD_GETCWD(document_root_buf, MAXPATHLEN); #elif HAVE_GETWD - ret = VCWD_GETWD(path); + ret = VCWD_GETWD(document_root_buf); #endif - document_root = ret ? path : "."; + document_root = ret ? document_root_buf: "."; } if (argc > php_optind) { Modified: php/php-src/trunk/sapi/cli/php_cli_server.c === --- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-19 17:47:34 UTC (rev 313441) +++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-19 18:00:16 UTC (rev 313442) @@ -2048,6 +2048,7 @@ extern const opt_struct OPTIONS[]; const char *document_root = NULL; const char *router = NULL; + char document_root_buf[MAXPATHLEN]; while ((c = php_getopt(argc, argv, OPTIONS, &php_optarg, &php_optind, 0, 2))!=-1) { switch (c) { @@ -2062,7 +2063,6 @@ if (document_root) { struct stat sb; - char resolved_path[MAXPATHLEN]; if (stat(document_root, &sb)) { fprintf(stderr, "Directory %s does not exist.\n", document_root); @@ -2072,19 +2072,18 @@ fprintf(stderr, "%s is not a directory.\n", document_root); return 1; } - if (VCWD_REALPATH(document_root, resolved_path)) { - document_root = resolved_path; + if (VCWD_REALPATH(document_root, document_root_buf)) { + document_root = document_root_buf; } } else { - char path[MAXPATHLEN]; char *ret = NULL; #if HAVE_GETCWD - ret = VCWD_GETCWD(path, MAXPATHLEN); + ret = VCWD_GETCWD(document_root_buf, MAXPATHLEN); #elif HAVE_GETWD - ret = VCWD_GETWD(path); + ret = VCWD_GETWD(document_root_buf); #endif - document_root = ret ? path : "."; + document_root = ret ? document_root_buf: "."; } if (argc > php_optind) { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c trunk/sapi/cli/php_cli_server.c
moriyoshiTue, 19 Jul 2011 18:17:25 + Revision: http://svn.php.net/viewvc?view=revision&revision=313444 Log: - Fixed bug #55107 (Null bytes in URL cause insecure behavior (code execution / code disclosure)). Bug: https://bugs.php.net/55107 (Verified) Null bytes in URL cause insecure behavior (code execution / code disclosure) Changed paths: U php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c U php/php-src/trunk/sapi/cli/php_cli_server.c Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c === --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-19 18:08:09 UTC (rev 313443) +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-19 18:17:25 UTC (rev 313444) @@ -242,6 +242,7 @@ }; static php_cli_server_http_reponse_status_code_pair template_map[] = { + { 400, "%sYour browser sent a request that this server could not understand." }, { 404, "%sThe requested resource %s was not found on this server." }, { 500, "%sThe server is temporality unavaiable." } }; @@ -1600,6 +1601,11 @@ destroy_request_info(&SG(request_info)); return FAILURE; } + if (strlen(client->request.path_translated) != client->request.path_translated_len) { + /* can't handle paths that contain nul bytes */ + destroy_request_info(&SG(request_info)); + return php_cli_server_send_error_page(server, client, 400 TSRMLS_CC); + } { zend_file_handle zfd; zfd.type = ZEND_HANDLE_FILENAME; @@ -1625,6 +1631,11 @@ int fd; int status = 200; + if (client->request.path_translated && strlen(client->request.path_translated) != client->request.path_translated_len) { + /* can't handle paths that contain nul bytes */ + return php_cli_server_send_error_page(server, client, 400 TSRMLS_CC); + } + fd = client->request.path_translated ? open(client->request.path_translated, O_RDONLY): -1; if (fd < 0) { char *errstr = get_last_error(); Modified: php/php-src/trunk/sapi/cli/php_cli_server.c === --- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-19 18:08:09 UTC (rev 313443) +++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-19 18:17:25 UTC (rev 313444) @@ -242,6 +242,7 @@ }; static php_cli_server_http_reponse_status_code_pair template_map[] = { + { 400, "%sYour browser sent a request that this server could not understand." }, { 404, "%sThe requested resource %s was not found on this server." }, { 500, "%sThe server is temporality unavaiable." } }; @@ -1600,6 +1601,11 @@ destroy_request_info(&SG(request_info)); return FAILURE; } + if (strlen(client->request.path_translated) != client->request.path_translated_len) { + /* can't handle paths that contain nul bytes */ + destroy_request_info(&SG(request_info)); + return php_cli_server_send_error_page(server, client, 400 TSRMLS_CC); + } { zend_file_handle zfd; zfd.type = ZEND_HANDLE_FILENAME; @@ -1625,6 +1631,11 @@ int fd; int status = 200; + if (client->request.path_translated && strlen(client->request.path_translated) != client->request.path_translated_len) { + /* can't handle paths that contain nul bytes */ + return php_cli_server_send_error_page(server, client, 400 TSRMLS_CC); + } + fd = client->request.path_translated ? open(client->request.path_translated, O_RDONLY): -1; if (fd < 0) { char *errstr = get_last_error(); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c trunk/sapi/cli/php_cli_server.c
moriyoshiWed, 20 Jul 2011 04:34:01 + Revision: http://svn.php.net/viewvc?view=revision&revision=313464 Log: - Fixed bug #55073 (PHP-CLI-webserver does not listen on ipv6 interfaces), letting getaddrinfo(3) validate IPv6 addresses. Bug: https://bugs.php.net/55073 (Assigned) PHP-CLI-webserver does not listen on ipv6 interfaces Changed paths: U php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c U php/php-src/trunk/sapi/cli/php_cli_server.c Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c === --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-20 03:11:53 UTC (rev 313463) +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-20 04:34:01 UTC (rev 313464) @@ -1806,19 +1806,35 @@ int port = 3000; php_socket_t server_sock = SOCK_ERR; - host = pestrdup(addr, 1); - if (!host || *host == ':' ) { - if (host) { - pefree(host, 1); + if (addr[0] == '[') { + char *p; + host = pestrdup(addr + 1, 1); + if (!host) { + return FAILURE; } - fprintf(stderr, "Invalid built-in web-server addr:port argument\n"); - return FAILURE; - } - - { - char *p = strchr(host, ':'); + p = strchr(host, ']'); if (p) { *p++ = '\0'; + if (*p == ':') { + port = strtol(p + 1, &p, 10); + } else if (*p != '\0') { + p = NULL; + } + } + if (!p) { + fprintf(stderr, "Invalid IPv6 address: %s\n", host); + retval = FAILURE; + goto out; + } + } else { + char *p; + host = pestrdup(addr, 1); + if (!host) { + return FAILURE; + } + p = strrchr(host, ':'); + if (p) { + *p++ = '\0'; port = strtol(p, &p, 10); } } @@ -2106,7 +2122,7 @@ } sapi_module.phpinfo_as_text = 0; - printf("PHP Development Server is listening on %s:%d in %s ... Press Ctrl-C to quit.\n", server.host, server.port, document_root); + printf("PHP Development Server is listening on %s in %s ... Press Ctrl-C to quit.\n", server_bind_address, document_root); #if defined(HAVE_SIGNAL_H) && defined(SIGINT) signal(SIGINT, php_cli_server_sigint_handler); Modified: php/php-src/trunk/sapi/cli/php_cli_server.c === --- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-20 03:11:53 UTC (rev 313463) +++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-20 04:34:01 UTC (rev 313464) @@ -1806,19 +1806,35 @@ int port = 3000; php_socket_t server_sock = SOCK_ERR; - host = pestrdup(addr, 1); - if (!host || *host == ':' ) { - if (host) { - pefree(host, 1); + if (addr[0] == '[') { + char *p; + host = pestrdup(addr + 1, 1); + if (!host) { + return FAILURE; } - fprintf(stderr, "Invalid built-in web-server addr:port argument\n"); - return FAILURE; - } - - { - char *p = strchr(host, ':'); + p = strchr(host, ']'); if (p) { *p++ = '\0'; + if (*p == ':') { + port = strtol(p + 1, &p, 10); + } else if (*p != '\0') { + p = NULL; + } + } + if (!p) { + fprintf(stderr, "Invalid IPv6 address: %s\n", host); + retval = FAILURE; + goto out; + } + } else { + char *p; + host = pestrdup(addr, 1); + if (!host) { + return FAILURE; + } + p = strrchr(host, ':'); + if (p) { + *p++ = '\0'; port = strtol(p, &p, 10); } } @@ -2106,7 +2122,7 @@ } sapi_module.phpinfo_as_text = 0; - printf("PHP Development Server is listening on %s:%d in %s ... Press Ctrl-C to quit.\n", server.host, server.port, document_root); + printf("PHP Development Server is listening on %s in %s ... Press Ctrl-C to quit.\n", server_bind_address, document_root); #if defined(HAVE_SIGNAL_H) && defined(SIGINT) signal(SIGINT, php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c trunk/sapi/cli/php_cli_server.c
moriyoshiWed, 20 Jul 2011 08:43:12 + Revision: http://svn.php.net/viewvc?view=revision&revision=313466 Log: - Better error handling. Changed paths: U php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c U php/php-src/trunk/sapi/cli/php_cli_server.c Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c === --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-20 07:48:08 UTC (rev 313465) +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-20 08:43:12 UTC (rev 313466) @@ -1805,9 +1805,9 @@ int err = 0; int port = 3000; php_socket_t server_sock = SOCK_ERR; + char *p = NULL; if (addr[0] == '[') { - char *p; host = pestrdup(addr + 1, 1); if (!host) { return FAILURE; @@ -1817,27 +1817,32 @@ *p++ = '\0'; if (*p == ':') { port = strtol(p + 1, &p, 10); + if (port <= 0) { + p = NULL; + } } else if (*p != '\0') { p = NULL; } } - if (!p) { - fprintf(stderr, "Invalid IPv6 address: %s\n", host); - retval = FAILURE; - goto out; - } } else { - char *p; host = pestrdup(addr, 1); if (!host) { return FAILURE; } - p = strrchr(host, ':'); + p = strchr(host, ':'); if (p) { *p++ = '\0'; port = strtol(p, &p, 10); + if (port <= 0) { + p = NULL; + } } } + if (!p) { + fprintf(stderr, "Invalid address: %s\n", addr); + retval = FAILURE; + goto out; + } server_sock = php_network_listen_socket(host, &port, SOCK_STREAM, &server->address_family, &server->socklen, &errstr TSRMLS_CC); if (server_sock == SOCK_ERR) { Modified: php/php-src/trunk/sapi/cli/php_cli_server.c === --- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-20 07:48:08 UTC (rev 313465) +++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-20 08:43:12 UTC (rev 313466) @@ -1805,9 +1805,9 @@ int err = 0; int port = 3000; php_socket_t server_sock = SOCK_ERR; + char *p = NULL; if (addr[0] == '[') { - char *p; host = pestrdup(addr + 1, 1); if (!host) { return FAILURE; @@ -1817,27 +1817,32 @@ *p++ = '\0'; if (*p == ':') { port = strtol(p + 1, &p, 10); + if (port <= 0) { + p = NULL; + } } else if (*p != '\0') { p = NULL; } } - if (!p) { - fprintf(stderr, "Invalid IPv6 address: %s\n", host); - retval = FAILURE; - goto out; - } } else { - char *p; host = pestrdup(addr, 1); if (!host) { return FAILURE; } - p = strrchr(host, ':'); + p = strchr(host, ':'); if (p) { *p++ = '\0'; port = strtol(p, &p, 10); + if (port <= 0) { + p = NULL; + } } } + if (!p) { + fprintf(stderr, "Invalid address: %s\n", addr); + retval = FAILURE; + goto out; + } server_sock = php_network_listen_socket(host, &port, SOCK_STREAM, &server->address_family, &server->socklen, &errstr TSRMLS_CC); if (server_sock == SOCK_ERR) { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c trunk/sapi/cli/php_cli_server.c
moriyoshiWed, 20 Jul 2011 09:00:20 + Revision: http://svn.php.net/viewvc?view=revision&revision=313467 Log: Fixed bug #55071. Maybe a bit overkill? Bug: https://bugs.php.net/55071 (Re-Opened) Change in-built web server description Changed paths: U php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c U php/php-src/trunk/sapi/cli/php_cli_server.c Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c === --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-20 08:43:12 UTC (rev 313466) +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-20 09:00:20 UTC (rev 313467) @@ -2127,7 +2127,19 @@ } sapi_module.phpinfo_as_text = 0; - printf("PHP Development Server is listening on %s in %s ... Press Ctrl-C to quit.\n", server_bind_address, document_root); + { + struct timeval tv; + struct tm tm; + char buf[52]; + gettimeofday(&tv, NULL); + php_localtime_r(&tv.tv_sec, &tm); + php_asctime_r(&tm, buf); + printf("PHP Development Server started at %s" + "Listening on %s\n" + "Document root is %s\n" + "Press Ctrl-C to quit.\n", + buf, server_bind_address, document_root); + } #if defined(HAVE_SIGNAL_H) && defined(SIGINT) signal(SIGINT, php_cli_server_sigint_handler); Modified: php/php-src/trunk/sapi/cli/php_cli_server.c === --- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-20 08:43:12 UTC (rev 313466) +++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-20 09:00:20 UTC (rev 313467) @@ -2127,7 +2127,19 @@ } sapi_module.phpinfo_as_text = 0; - printf("PHP Development Server is listening on %s in %s ... Press Ctrl-C to quit.\n", server_bind_address, document_root); + { + struct timeval tv; + struct tm tm; + char buf[52]; + gettimeofday(&tv, NULL); + php_localtime_r(&tv.tv_sec, &tm); + php_asctime_r(&tm, buf); + printf("PHP Development Server started at %s" + "Listening on %s\n" + "Document root is %s\n" + "Press Ctrl-C to quit.\n", + buf, server_bind_address, document_root); + } #if defined(HAVE_SIGNAL_H) && defined(SIGINT) signal(SIGINT, php_cli_server_sigint_handler); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c trunk/sapi/cli/php_cli_server.c
moriyoshiThu, 21 Jul 2011 07:31:29 + Revision: http://svn.php.net/viewvc?view=revision&revision=313496 Log: - Show PHP_VERSION in the banner. Suggested by Chris and others. Changed paths: U php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c U php/php-src/trunk/sapi/cli/php_cli_server.c Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c === --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-21 03:41:21 UTC (rev 313495) +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-21 07:31:29 UTC (rev 313496) @@ -2134,11 +2134,11 @@ gettimeofday(&tv, NULL); php_localtime_r(&tv.tv_sec, &tm); php_asctime_r(&tm, buf); - printf("PHP Development Server started at %s" + printf("PHP %s Development Server started at %s" "Listening on %s\n" "Document root is %s\n" "Press Ctrl-C to quit.\n", - buf, server_bind_address, document_root); + PHP_VERSION, buf, server_bind_address, document_root); } #if defined(HAVE_SIGNAL_H) && defined(SIGINT) Modified: php/php-src/trunk/sapi/cli/php_cli_server.c === --- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-21 03:41:21 UTC (rev 313495) +++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-21 07:31:29 UTC (rev 313496) @@ -2134,11 +2134,11 @@ gettimeofday(&tv, NULL); php_localtime_r(&tv.tv_sec, &tm); php_asctime_r(&tm, buf); - printf("PHP Development Server started at %s" + printf("PHP %s Development Server started at %s" "Listening on %s\n" "Document root is %s\n" "Press Ctrl-C to quit.\n", - buf, server_bind_address, document_root); + PHP_VERSION, buf, server_bind_address, document_root); } #if defined(HAVE_SIGNAL_H) && defined(SIGINT) -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c trunk/sapi/cli/php_cli_server.c
moriyoshiSat, 23 Jul 2011 11:29:26 + Revision: http://svn.php.net/viewvc?view=revision&revision=313627 Log: - Give index.php a precedence over index.html. Patch by davidc. Changed paths: U php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c U php/php-src/trunk/sapi/cli/php_cli_server.c Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c === --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-23 09:27:15 UTC (rev 313626) +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-07-23 11:29:26 UTC (rev 313627) @@ -1065,7 +1065,7 @@ static void php_cli_server_request_translate_vpath(php_cli_server_request *request, const char *document_root, size_t document_root_len) /* {{{ */ { struct stat sb; - static const char *index_files[] = { "index.html", "index.php", NULL }; + static const char *index_files[] = { "index.php", "index.html", NULL }; char *buf = safe_pemalloc(1, request->vpath_len, 1 + document_root_len + 1 + sizeof("index.html"), 1); char *p = buf, *prev_patch = 0, *q, *vpath; memmove(p, document_root, document_root_len); Modified: php/php-src/trunk/sapi/cli/php_cli_server.c === --- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-23 09:27:15 UTC (rev 313626) +++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-07-23 11:29:26 UTC (rev 313627) @@ -1065,7 +1065,7 @@ static void php_cli_server_request_translate_vpath(php_cli_server_request *request, const char *document_root, size_t document_root_len) /* {{{ */ { struct stat sb; - static const char *index_files[] = { "index.html", "index.php", NULL }; + static const char *index_files[] = { "index.php", "index.html", NULL }; char *buf = safe_pemalloc(1, request->vpath_len, 1 + document_root_len + 1 + sizeof("index.html"), 1); char *p = buf, *prev_patch = 0, *q, *vpath; memmove(p, document_root, document_root_len); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c trunk/sapi/cli/php_cli_server.c
Hi, Where does HAVE_BROKEN_GETCWD come from? Isn't simply using VCWD_GETCWD sufficient? Moriyoshi On 2011/09/20, at 16:06, Xinchen Hui wrote: > laruence Tue, 20 Sep 2011 07:06:55 + > > Revision: http://svn.php.net/viewvc?view=revision&revision=317040 > > Log: > Fix Bug #55726 (Changing the working directory makes router script > inaccessible) > > Bug: https://bugs.php.net/55726 (Assigned) Changing the working directory > makes router script inaccessible > > Changed paths: >U php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c >U php/php-src/trunk/sapi/cli/php_cli_server.c > > Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c > === > --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c2011-09-20 > 05:42:36 UTC (rev 317039) > +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c2011-09-20 > 07:06:55 UTC (rev 317040) > @@ -1877,11 +1877,24 @@ > } > { > zend_file_handle zfd; > +#if HAVE_BROKEN_GETCWD > + int old_cwd_fd = -1; > + old_cwd_fd = open(".", 0); > +#else > + char *old_cwd; > + ALLOCA_FLAG(use_heap) > +#define OLD_CWD_SIZE 4096 > + old_cwd = do_alloca(OLD_CWD_SIZE, use_heap); > + old_cwd[0] = '\0'; > + php_ignore_value(VCWD_GETCWD(old_cwd, OLD_CWD_SIZE-1)); > +#endif > + > zfd.type = ZEND_HANDLE_FILENAME; > zfd.filename = server->router; > zfd.handle.fp = NULL; > zfd.free_filename = 0; > zfd.opened_path = NULL; > + > zend_try { > zval *retval = NULL; > if (SUCCESS == zend_execute_scripts(ZEND_REQUIRE > TSRMLS_CC, &retval, 1, &zfd)) { > @@ -1893,6 +1906,18 @@ > decline = 1; > } > } zend_end_try(); > + > +#if HAVE_BROKEN_GETCWD > + if (old_cwd_fd != -1) { > + fchdir(old_cwd_fd); > + close(old_cwd_fd); > + } > +#else > + if (old_cwd[0] != '\0') { > + php_ignore_value(VCWD_CHDIR(old_cwd)); > + } > + free_alloca(old_cwd, use_heap); > +#endif > } > > if (decline) { > > Modified: php/php-src/trunk/sapi/cli/php_cli_server.c > === > --- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-09-20 05:42:36 UTC > (rev 317039) > +++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-09-20 07:06:55 UTC > (rev 317040) > @@ -1877,11 +1877,24 @@ > } > { > zend_file_handle zfd; > +#if HAVE_BROKEN_GETCWD > + int old_cwd_fd = -1; > + old_cwd_fd = open(".", 0); > +#else > + char *old_cwd; > + ALLOCA_FLAG(use_heap) > +#define OLD_CWD_SIZE 4096 > + old_cwd = do_alloca(OLD_CWD_SIZE, use_heap); > + old_cwd[0] = '\0'; > + php_ignore_value(VCWD_GETCWD(old_cwd, OLD_CWD_SIZE-1)); > +#endif > + > zfd.type = ZEND_HANDLE_FILENAME; > zfd.filename = server->router; > zfd.handle.fp = NULL; > zfd.free_filename = 0; > zfd.opened_path = NULL; > + > zend_try { > zval *retval = NULL; > if (SUCCESS == zend_execute_scripts(ZEND_REQUIRE > TSRMLS_CC, &retval, 1, &zfd)) { > @@ -1893,6 +1906,18 @@ > decline = 1; > } > } zend_end_try(); > + > +#if HAVE_BROKEN_GETCWD > + if (old_cwd_fd != -1) { > + fchdir(old_cwd_fd); > + close(old_cwd_fd); > + } > +#else > + if (old_cwd[0] != '\0') { > + php_ignore_value(VCWD_CHDIR(old_cwd)); > + } > + free_alloca(old_cwd, use_heap); > +#endif > } > > if (decline) { > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php -- Moriyoshi Koizumi m...@mozo.jp -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_4/sapi/cli/php_cli_server.c branches/PHP_5_4/sapi/cli/tests/php_cli_server_008.phpt trunk/sapi/cli/php_cli_server.c trunk/sapi/cli/tests/php_cli_server_008.
moriyoshiFri, 21 Oct 2011 05:24:30 + Revision: http://svn.php.net/viewvc?view=revision&revision=318283 Log: Add SERVER_PROTOCOL variable to $_SERVER. Patch by kuzuha. Thanks. Changed paths: U php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c A php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_008.phpt U php/php-src/trunk/sapi/cli/php_cli_server.c A php/php-src/trunk/sapi/cli/tests/php_cli_server_008.phpt Modified: php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c === --- php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-10-21 01:39:45 UTC (rev 318282) +++ php/php-src/branches/PHP_5_4/sapi/cli/php_cli_server.c 2011-10-21 05:24:30 UTC (rev 318283) @@ -571,6 +571,12 @@ sapi_cli_server_register_variable(track_vars_array, "SERVER_SOFTWARE", tmp TSRMLS_CC); efree(tmp); } + { + char *tmp; + spprintf(&tmp, 0, "HTTP/%d.%d", client->request.protocol_version / 100, client->request.protocol_version % 100); + sapi_cli_server_register_variable(track_vars_array, "SERVER_PROTOCOL", tmp TSRMLS_CC); + efree(tmp); + } sapi_cli_server_register_variable(track_vars_array, "REQUEST_URI", client->request.request_uri TSRMLS_CC); sapi_cli_server_register_variable(track_vars_array, "REQUEST_METHOD", SG(request_info).request_method TSRMLS_CC); sapi_cli_server_register_variable(track_vars_array, "PHP_SELF", client->request.vpath TSRMLS_CC); Added: php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_008.phpt === --- php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_008.phpt (rev 0) +++ php/php-src/branches/PHP_5_4/sapi/cli/tests/php_cli_server_008.phpt 2011-10-21 05:24:30 UTC (rev 318283) @@ -0,0 +1,71 @@ +--TEST-- +SERVER_PROTOCOL header availability +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +HTTP/1.1 200 OK +Host: %s +Connection: closed +X-Powered-By: PHP/%s-dev +Content-type: text/html + +string(8) "HTTP/1.1" +HTTP/1.0 200 OK +Host: %s +Connection: closed +X-Powered-By: PHP/%s-dev +Content-type: text/html + +string(8) "HTTP/1.0" Modified: php/php-src/trunk/sapi/cli/php_cli_server.c === --- php/php-src/trunk/sapi/cli/php_cli_server.c 2011-10-21 01:39:45 UTC (rev 318282) +++ php/php-src/trunk/sapi/cli/php_cli_server.c 2011-10-21 05:24:30 UTC (rev 318283) @@ -571,6 +571,12 @@ sapi_cli_server_register_variable(track_vars_array, "SERVER_SOFTWARE", tmp TSRMLS_CC); efree(tmp); } + { + char *tmp; + spprintf(&tmp, 0, "HTTP/%d.%d", client->request.protocol_version / 100, client->request.protocol_version % 100); + sapi_cli_server_register_variable(track_vars_array, "SERVER_PROTOCOL", tmp TSRMLS_CC); + efree(tmp); + } sapi_cli_server_register_variable(track_vars_array, "REQUEST_URI", client->request.request_uri TSRMLS_CC); sapi_cli_server_register_variable(track_vars_array, "REQUEST_METHOD", SG(request_info).request_method TSRMLS_CC); sapi_cli_server_register_variable(track_vars_array, "PHP_SELF", client->request.vpath TSRMLS_CC); Added: php/php-src/trunk/sapi/cli/tests/php_cli_server_008.phpt === --- php/php-src/trunk/sapi/cli/tests/php_cli_server_008.phpt (rev 0) +++ php/php-src/trunk/sapi/cli/tests/php_cli_server_008.phpt2011-10-21 05:24:30 UTC (rev 318283) @@ -0,0 +1,71 @@ +--TEST-- +SERVER_PROTOCOL header availability +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +HTTP/1.1 200 OK +Host: %s +Connection: closed +X-Powered-By: PHP/%s-dev +Content-type: text/html + +string(8) "HTTP/1.1" +HTTP/1.0 200 OK +Host: %s +Connection: closed +X-Powered-By: PHP/%s-dev +Content-type: text/html + +string(8) "HTTP/1.0" -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] svn: /php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/ mbfilter_utf8.c
Rui, what is the reason behind this change? Moriyoshi On 2011/10/18, at 23:04, Rui Hirokawa wrote: > hirokawa Tue, 18 Oct 2011 14:04:13 + > > Revision: http://svn.php.net/viewvc?view=revision&revision=318184 > > Log: > MFH: fixed byte length of utf-8. > > Changed paths: >U > php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c > > Modified: > php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c > === > --- php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c > 2011-10-18 14:03:44 UTC (rev 318183) > +++ php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c > 2011-10-18 14:04:13 UTC (rev 318184) > @@ -52,7 +52,7 @@ > 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, > 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, > 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, > - 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1 > + 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 > }; > > static const char *mbfl_encoding_utf8_aliases[] = {"utf8", NULL}; > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php -- Moriyoshi Koizumi m...@mozo.jp -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] svn: /php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/ mbfilter_utf8.c
I thought it was valid in terms of CEF nature of UTF-8, but it turrned out RFC states such sequences that start with F5-F7 are not valid. Thanks for the clarification. Moriyoshi On 2011/10/23, at 20:25, Rui Hirokawa wrote: > Hello, Moriyoshi, > > It is because 0xf5-0xf7 is the invalid four byte UTF-8 sequence. > > ref: http://en.wikipedia.org/wiki/UTF-8 > > Rui > > Moriyoshi Koizumi wrote: >> Rui, what is the reason behind this change? >> >> Moriyoshi >> >> On 2011/10/18, at 23:04, Rui Hirokawa wrote: >> >>> hirokawa Tue, 18 Oct 2011 14:04:13 + >>> >>> Revision: http://svn.php.net/viewvc?view=revision&revision=318184 >>> >>> Log: >>> MFH: fixed byte length of utf-8. >>> >>> Changed paths: >>> U >>> php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c >>> >>> Modified: >>> php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c >>> === >>> --- >>> php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c >>> 2011-10-18 14:03:44 UTC (rev 318183) >>> +++ >>> php/php-src/branches/PHP_5_4/ext/mbstring/libmbfl/filters/mbfilter_utf8.c >>> 2011-10-18 14:04:13 UTC (rev 318184) >>> @@ -52,7 +52,7 @@ >>> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >>> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, >>> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, >>> - 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1 >>> + 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 >>> }; >>> >>> static const char *mbfl_encoding_utf8_aliases[] = {"utf8", NULL}; >>> >>> -- >>> PHP CVS Mailing List (http://www.php.net/) >>> To unsubscribe, visit: http://www.php.net/unsub.php >> > -- Moriyoshi Koizumi m...@mozo.jp -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/branches/PHP_5_2/ NEWS ext/mbstring/libmbfl/filters/mbfilter_utf16.c ext/mbstring/libmbfl/filters/mbfilter_utf8.c ext/mbstring/libmbfl/mbfl/mbfilter.c ext/mbstring/tests/bu
moriyoshiWed, 23 Sep 2009 14:26:51 + Revision: http://svn.php.net/viewvc?view=revision&revision=288612 Log: * Merge two patches from 5.3 branch (intentionally uncommited because 5.2.11 was about to come at that time). Changed paths: _U php/php-src/branches/PHP_5_2/ U php/php-src/branches/PHP_5_2/NEWS U php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_utf16.c U php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_utf8.c U php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/mbfl/mbfilter.c A + php/php-src/branches/PHP_5_2/ext/mbstring/tests/bug49528.phpt (from php/php-src/branches/PHP_5_3/ext/mbstring/tests/bug49528.phpt:r288260) A + php/php-src/branches/PHP_5_2/ext/mbstring/tests/bug49536.phpt (from php/php-src/branches/PHP_5_3/ext/mbstring/tests/bug49536.phpt:r288273) Property changes on: php/php-src/branches/PHP_5_2 ___ Modified: svn:mergeinfo - /php/php-src/branches/PHP_5_3:284120 /php/php-src/trunk:284726 + /php/php-src/branches/PHP_5_3:284120,288260,288273 /php/php-src/trunk:284726 Modified: php/php-src/branches/PHP_5_2/NEWS === --- php/php-src/branches/PHP_5_2/NEWS 2009-09-23 14:18:04 UTC (rev 288611) +++ php/php-src/branches/PHP_5_2/NEWS 2009-09-23 14:26:51 UTC (rev 288612) @@ -3,8 +3,12 @@ ?? ??? , PHP 5.2.12 - Fixed bug #49630 (imap_listscan function missing). (Felipe) - Fixed bug #49578 (make install-pear fails). (Hannes) +- Fixed bug #49536 (mb_detect_encoding() returns incorrect results when + mbstring.strict_mode is turned on). (Moriyoshi) - Fixed bug #49531 (CURLOPT_INFILESIZE sometimes causes warning "CURLPROTO_FILE cannot be set"). (Felipe) +- Fixed bug #49528 (UTF-16 strings prefixed by BOMs wrondly converted). + (Moriyoshi) 17 Sep 2009, PHP 5.2.11 - Fixed certificate validation inside php_openssl_apply_verification_policy. Modified: php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_utf16.c === --- php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_utf16.c 2009-09-23 14:18:04 UTC (rev 288611) +++ php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_utf16.c 2009-09-23 14:26:51 UTC (rev 288612) @@ -127,7 +127,7 @@ int n, endian; endian = filter->status & 0xff00; - switch (filter->status & 0xff) { + switch (filter->status & 0x0f) { case 0: if (endian) { n = c & 0xff; @@ -144,15 +144,8 @@ n = c & 0xff; } n |= filter->cache & 0x; - filter->status &= ~0xff; - if (n == 0xfffe) { - if (endian) { - filter->status = 0; /* big-endian */ - } else { - filter->status = 0x100; /* little-endian */ - } - CK((*filter->output_function)(0xfeff, filter->data)); - } else if (n >= 0xd800 && n < 0xdc00) { + filter->status &= ~0x0f; + if (n >= 0xd800 && n < 0xdc00) { filter->cache = ((n & 0x3ff) << 16) + 0x40; } else if (n >= 0xdc00 && n < 0xe000) { n &= 0x3ff; @@ -166,7 +159,21 @@ CK((*filter->output_function)(n, filter->data)); } } else { + int is_first = filter->status & 0x10; filter->cache = 0; + filter->status |= 0x10; + if (!is_first) { + if (n == 0xfffe) { + if (endian) { + filter->status &= ~0x100; /* big-endian */ + } else { + filter->status |= 0x100; /* little-endian */ + } + break; + } else if (n == 0xfeff) { + break; + } + } CK((*filter->output_function)(n, filter->data)); } break; Modified: php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_utf8.c === --- php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_utf8.c 2009-09-23 14:18:04 UTC (rev 288611) +++ php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_utf8.c 2009-09-23 14:2
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/NEWS branches/PHP_5_2/ext/mbstring/mbstring.c branches/PHP_5_2/ext/mbstring/tests/bug49354.phpt branches/PHP_5_3/ext/mbstring/mbstring.c branches/PHP_5_3/
moriyoshiWed, 23 Sep 2009 15:22:47 + Revision: http://svn.php.net/viewvc?view=revision&revision=288613 Log: - Fixed bug #49354 (mb_strcut() cuts wrong length when offset is within a multibyte character). (This bug was introduced by the commit by r202895. Please double-check the specification of the function you are going to *fix*.) Bug: http://bugs.php.net/49354 (Assigned) mb_strcut() cutting wrong length when offset is within a multibyte character Changed paths: U php/php-src/branches/PHP_5_2/NEWS U php/php-src/branches/PHP_5_2/ext/mbstring/mbstring.c A php/php-src/branches/PHP_5_2/ext/mbstring/tests/bug49354.phpt U php/php-src/branches/PHP_5_3/ext/mbstring/mbstring.c A php/php-src/branches/PHP_5_3/ext/mbstring/tests/bug49354.phpt U php/php-src/trunk/ext/mbstring/mbstring.c A php/php-src/trunk/ext/mbstring/tests/bug49354.phpt Modified: php/php-src/branches/PHP_5_2/NEWS === --- php/php-src/branches/PHP_5_2/NEWS 2009-09-23 14:26:51 UTC (rev 288612) +++ php/php-src/branches/PHP_5_2/NEWS 2009-09-23 15:22:47 UTC (rev 288613) @@ -7,6 +7,8 @@ mbstring.strict_mode is turned on). (Moriyoshi) - Fixed bug #49531 (CURLOPT_INFILESIZE sometimes causes warning "CURLPROTO_FILE cannot be set"). (Felipe) +- Fixed bug #49354 (mb_strcut() cuts wrong length when offset is in the middle + of a multibyte character). (Moriyoshi) - Fixed bug #49528 (UTF-16 strings prefixed by BOMs wrondly converted). (Moriyoshi) Modified: php/php-src/branches/PHP_5_2/ext/mbstring/mbstring.c === --- php/php-src/branches/PHP_5_2/ext/mbstring/mbstring.c2009-09-23 14:26:51 UTC (rev 288612) +++ php/php-src/branches/PHP_5_2/ext/mbstring/mbstring.c2009-09-23 15:22:47 UTC (rev 288613) @@ -2272,9 +2272,6 @@ if (from > Z_STRLEN_PP(arg1)) { RETURN_FALSE; } - if (((unsigned) from + (unsigned) len) > Z_STRLEN_PP(arg1)) { - len = Z_STRLEN_PP(arg1) - from; - } ret = mbfl_strcut(&string, &result, from, len); if (ret != NULL) { Added: php/php-src/branches/PHP_5_2/ext/mbstring/tests/bug49354.phpt === --- php/php-src/branches/PHP_5_2/ext/mbstring/tests/bug49354.phpt (rev 0) +++ php/php-src/branches/PHP_5_2/ext/mbstring/tests/bug49354.phpt 2009-09-23 15:22:47 UTC (rev 288613) @@ -0,0 +1,21 @@ +--TEST-- +Bug #49354 (mb_strcut() cuts wrong length when offset is in the middle of a multibyte character) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(12) "AåBäCöDü" +string(11) "åBäCöDü" +string(11) "åBäCöDü" +string(9) "BäCöDü" +string(0) "" +bool(false) Modified: php/php-src/branches/PHP_5_3/ext/mbstring/mbstring.c === --- php/php-src/branches/PHP_5_3/ext/mbstring/mbstring.c2009-09-23 14:26:51 UTC (rev 288612) +++ php/php-src/branches/PHP_5_3/ext/mbstring/mbstring.c2009-09-23 15:22:47 UTC (rev 288613) @@ -2665,10 +2665,6 @@ RETURN_FALSE; } - if (((unsigned int)from + (unsigned int)len) > string.len) { - len = string.len - from; - } - ret = mbfl_strcut(&string, &result, from, len); if (ret == NULL) { RETURN_FALSE; Added: php/php-src/branches/PHP_5_3/ext/mbstring/tests/bug49354.phpt === --- php/php-src/branches/PHP_5_3/ext/mbstring/tests/bug49354.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/ext/mbstring/tests/bug49354.phpt 2009-09-23 15:22:47 UTC (rev 288613) @@ -0,0 +1,21 @@ +--TEST-- +Bug #49354 (mb_strcut() cuts wrong length when offset is in the middle of a multibyte character) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(12) "AåBäCöDü" +string(11) "åBäCöDü" +string(11) "åBäCöDü" +string(9) "BäCöDü" +string(0) "" +bool(false) Modified: php/php-src/trunk/ext/mbstring/mbstring.c === --- php/php-src/trunk/ext/mbstring/mbstring.c 2009-09-23 14:26:51 UTC (rev 288612) +++ php/php-src/trunk/ext/mbstring/mbstring.c 2009-09-23 15:22:47 UTC (rev 288613) @@ -2664,10 +2664,6 @@ RETURN_FALSE; } - if (((unsigned int)from + (unsigned int)len) > string.len) { - len = string.len - from; - } - ret = mbfl_strcut(&string, &result, from, len); if (ret == NULL) { RETURN_FALSE; Added: php/php-src/trunk/ext/mbstring/tests/bug49354.phpt === --- php/php-src/trunk/ext/mbstring/tests/bug49354.phpt (rev 0) +++ php/php-src/trunk/ext/mbstring/tests/bug49354.phpt 2
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt trunk/ext/standard/tests/strings/bug49785.phpt
moriyoshiFri, 09 Oct 2009 17:13:05 + Revision: http://svn.php.net/viewvc?view=revision&revision=289429 Log: - More tests to go. Changed paths: U php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt U php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt U php/php-src/trunk/ext/standard/tests/strings/bug49785.phpt Modified: php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt === --- php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt 2009-10-09 17:03:56 UTC (rev 289428) +++ php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt 2009-10-09 17:13:05 UTC (rev 289429) @@ -6,6 +6,22 @@ return is_string($val) ? bin2hex($val): $val; } +// UTF-8: basic tests +var_dump(bin2hex(htmlentities("\xc1\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xc2\x80", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xce\x91", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xce\xb1", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xdf\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xe0\xa0\x80", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xe0\x9f\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xe2\x99\xa5", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xef\xbf\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xf0\x8f\xbf\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xf0\x90\x80\x80", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xf7\xbf\xbf\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xf8\x88\x80\x80\x80", ENT_QUOTES, "UTF-8"))); + +echo "--\n"; // UTF-8: alternative (invalid) UTF-8 sequence var_dump(_bin2hex(htmlspecialchars("\xc0\xa6", ENT_QUOTES, 'UTF-8'))); var_dump(_bin2hex(htmlspecialchars("\xe0\x80\xa6", ENT_QUOTES, 'UTF-8'))); @@ -98,8 +114,22 @@ ?> --EXPECT-- string(0) "" +string(4) "c280" +string(14) "26416c7068613b" +string(14) "26616c7068613b" +string(4) "dfbf" +string(6) "e0a080" string(0) "" +string(16) "266865617274733b" +string(6) "efbfbf" string(0) "" +string(8) "f0908080" +string(8) "f7bfbfbf" +string(0) "" +-- +string(0) "" +string(0) "" +string(0) "" string(2) "80" string(2) "a0" string(2) "a1" Modified: php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt === --- php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt 2009-10-09 17:03:56 UTC (rev 289428) +++ php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt 2009-10-09 17:13:05 UTC (rev 289429) @@ -6,6 +6,22 @@ return is_string($val) ? bin2hex($val): $val; } +// UTF-8: basic tests +var_dump(bin2hex(htmlentities("\xc1\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xc2\x80", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xce\x91", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xce\xb1", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xdf\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xe0\xa0\x80", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xe0\x9f\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xe2\x99\xa5", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xef\xbf\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xf0\x8f\xbf\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xf0\x90\x80\x80", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xf7\xbf\xbf\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xf8\x88\x80\x80\x80", ENT_QUOTES, "UTF-8"))); + +echo "--\n"; // UTF-8: alternative (invalid) UTF-8 sequence var_dump(_bin2hex(htmlspecialchars("\xc0\xa6", ENT_QUOTES, 'UTF-8'))); var_dump(_bin2hex(htmlspecialchars("\xe0\x80\xa6", ENT_QUOTES, 'UTF-8'))); @@ -98,8 +114,22 @@ ?> --EXPECT-- string(0) "" +string(4) "c280" +string(14) "26416c7068613b" +string(14) "26616c7068613b" +string(4) "dfbf" +string(6) "e0a080" string(0) "" +string(16) "266865617274733b" +string(6) "efbfbf" string(0) "" +string(8) "f0908080" +string(8) "f7bfbfbf" +string(0) "" +-- +string(0) "" +string(0) "" +string(0) "" string(2) "80" string(2) "a0" string(2) "a1" Modified: php/php-src/trunk/ext/standard/tests/strings/bug49785.phpt === --- php/php-src/trunk/ext/standard/tests/strings/bug49785.phpt 2009-10-09 17:03:56 UTC (rev 289428) +++ php/php-src/trunk/ext/standard/tests/strings/bug49785.phpt 2009-10-09 17:13:05 UTC (rev 289429) @@ -6,6 +6,22 @@ return is_string($val) ? bin2hex($val): $val; } +// UTF-8: basic tests +var_dump(bin2hex(htmlentities("\xc1\xbf", ENT_QUOTES, "UTF-8"))); +var_dump(bin2hex(htmlentities("\xc2\x80", ENT_QUOTES, "UTF-8"))); +va
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/ext/standard/html.c branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt branches/PHP_5_3/ext/standard/html.c branches/PHP_5_3/ext/standard/tests/str
moriyoshiSun, 11 Oct 2009 23:52:33 + Revision: http://svn.php.net/viewvc?view=revision&revision=289554 Log: - A couple more fix for my previous fix. (one of the fix by Arnaud Le Blanc. Thanks!) Changed paths: U php/php-src/branches/PHP_5_2/ext/standard/html.c U php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt U php/php-src/branches/PHP_5_3/ext/standard/html.c U php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt U php/php-src/branches/PHP_5_3/ext/standard/tests/strings/htmlentities-utf-2.phpt U php/php-src/branches/PHP_5_3/ext/standard/tests/strings/htmlentities-utf.phpt U php/php-src/trunk/ext/standard/html.c U php/php-src/trunk/ext/standard/tests/strings/bug49785.phpt U php/php-src/trunk/ext/standard/tests/strings/htmlentities-utf-2.phpt U php/php-src/trunk/ext/standard/tests/strings/htmlentities-utf.phpt Modified: php/php-src/branches/PHP_5_2/ext/standard/html.c === --- php/php-src/branches/PHP_5_2/ext/standard/html.c 2009-10-11 23:37:52 UTC (rev 289553) +++ php/php-src/branches/PHP_5_2/ext/standard/html.c 2009-10-11 23:52:33 UTC (rev 289554) @@ -484,6 +484,11 @@ }\ mbseq[mbpos++] = (mbchar); } +#define MB_FAILURE(pos) do { \ + *status = FAILURE; \ + return 0; \ +} while (0) + #define CHECK_LEN(pos, chars_need) \ if((str_len - (pos)) < chars_need) { \ *status = FAILURE; \ @@ -526,10 +531,12 @@ this_char = c; pos++; } else if (c < 0xc0) { - *status = FAILURE; - return 0; + MB_FAILURE(pos); } else if (c < 0xe0) { CHECK_LEN(pos, 2); + if (str[pos + 1] < 0x80 || str[pos + 1] > 0xbf) { +MB_FAILURE(pos); + } this_char = ((c & 0x1f) << 6) | (str[pos + 1] & 0x3f); if (this_char < 0x80) { *status = FAILURE; @@ -540,10 +547,15 @@ pos += 2; } else if (c < 0xf0) { CHECK_LEN(pos, 3); + if (str[pos + 1] < 0x80 || str[pos + 1] > 0xbf) { +MB_FAILURE(pos); + } + if (str[pos + 2] < 0x80 || str[pos + 2] > 0xbf) { +MB_FAILURE(pos); + } this_char = ((c & 0x0f) << 12) | ((str[pos + 1] & 0x3f) << 6) | (str[pos + 2] & 0x3f); if (this_char < 0x800) { - *status = FAILURE; - return 0; +MB_FAILURE(pos); } MB_WRITE((unsigned char)c); MB_WRITE((unsigned char)str[pos + 1]); @@ -551,10 +563,18 @@ pos += 3; } else if (c < 0xf8) { CHECK_LEN(pos, 4); + if (str[pos + 1] < 0x80 || str[pos + 1] > 0xbf) { +MB_FAILURE(pos); + } + if (str[pos + 2] < 0x80 || str[pos + 2] > 0xbf) { +MB_FAILURE(pos); + } + if (str[pos + 3] < 0x80 || str[pos + 3] > 0xbf) { +MB_FAILURE(pos); + } this_char = ((c & 0x07) << 18) | ((str[pos + 1] & 0x3f) << 12) | ((str[pos + 2] & 0x3f) << 6) | (str[pos + 3] & 0x3f); if (this_char < 0x1) { - *status = FAILURE; - return 0; +MB_FAILURE(pos); } MB_WRITE((unsigned char)c); MB_WRITE((unsigned char)str[pos + 1]); @@ -562,8 +582,7 @@ MB_WRITE((unsigned char)str[pos + 3]); pos += 4; } else { - *status = FAILURE; - return 0; +MB_FAILURE(pos); } } break; @@ -585,8 +604,7 @@ MB_WRITE(next_char); this_char = (this_char << 8) | next_char; } else { - *status = FAILURE; - return 0; + MB_FAILURE(pos); } } else { MB_WRITE(this_char); @@ -611,8 +629,7 @@ MB_WRITE(next_char); this_char = (this_char << 8) | next_char; } else { - *status = FAILURE; - return 0; + MB_FAILURE(pos); } } else { MB_WRITE(this_char); @@ -634,8 +651,7 @@ MB_WRITE(next_char); this_char = (this_char << 8) | next_char; } else { - *status = FAILURE; - return 0; + MB_FAILURE(pos); } } else if (this_char == 0x8e) { /* peek at the next char */ @@ -647,8 +663,7 @@ MB_WRITE(next_char); this_char = (this_char << 8) | next_char; } else { - *status = FAILURE; - return 0; + MB_FAILURE(pos); } } else if (this_char == 0x8f) { /* peek at the next two char */ @@ -665,8 +680,7 @@ MB_WRITE(next2_char); this_char = (this_char << 16) | (next_char << 8) | next_char; } else { - *status = FAILURE; - return 0; + MB_FAILURE(pos); } } else { MB_WRITE(this_char); Modified: php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt === --- php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt 2009-10-11 23:37:52 UTC (rev
Re: [PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/ext/standard/html.c branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt branches/PHP_5_3/ext/standard/html.c branches/PHP_5_3/ext/standard/tes
Right. Moriyoshi On Mon, Oct 12, 2009 at 5:28 PM, Pierre Joye wrote: > hi, > > Is it about #49785? > > Cheers, > -- > Pierre > > On Mon, Oct 12, 2009 at 1:52 AM, Moriyoshi Koizumi wrote: >> moriyoshi Sun, 11 Oct 2009 23:52:33 + >> >> Revision: http://svn.php.net/viewvc?view=revision&revision=289554 >> >> Log: >> - A couple more fix for my previous fix. >> (one of the fix by Arnaud Le Blanc. Thanks!) >> >> Changed paths: >> U php/php-src/branches/PHP_5_2/ext/standard/html.c >> U php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt >> U php/php-src/branches/PHP_5_3/ext/standard/html.c >> U php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt >> U >> php/php-src/branches/PHP_5_3/ext/standard/tests/strings/htmlentities-utf-2.phpt >> U >> php/php-src/branches/PHP_5_3/ext/standard/tests/strings/htmlentities-utf.phpt >> U php/php-src/trunk/ext/standard/html.c >> U php/php-src/trunk/ext/standard/tests/strings/bug49785.phpt >> U php/php-src/trunk/ext/standard/tests/strings/htmlentities-utf-2.phpt >> U php/php-src/trunk/ext/standard/tests/strings/htmlentities-utf.phpt >> >> >> -- >> PHP CVS Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> > > > > -- > Pierre > > http://blog.thepimp.net | http://www.libgd.org > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/branches/PHP_5_2/ext/standard/ html.c
moriyoshiMon, 12 Oct 2009 14:25:51 + Revision: http://svn.php.net/viewvc?view=revision&revision=289565 Log: - Bug #49785: take 3 - fixed infinite loop bug (only for 5.2) (reported by T.Komura. Thanks) Bug: http://bugs.php.net/49785 (Closed) htmlspecialchars() should check byte sequence more strictly Changed paths: U php/php-src/branches/PHP_5_2/ext/standard/html.c Modified: php/php-src/branches/PHP_5_2/ext/standard/html.c === --- php/php-src/branches/PHP_5_2/ext/standard/html.c2009-10-12 14:23:29 UTC (rev 289564) +++ php/php-src/branches/PHP_5_2/ext/standard/html.c2009-10-12 14:25:51 UTC (rev 289565) @@ -484,15 +484,26 @@ }\ mbseq[mbpos++] = (mbchar); } +/* skip one byte and return */ #define MB_FAILURE(pos) do { \ + *newpos = pos + 1; \ *status = FAILURE; \ return 0; \ } while (0) #define CHECK_LEN(pos, chars_need) \ - if((str_len - (pos)) < chars_need) {\ - *status = FAILURE; \ - return 0; \ + if (chars_need < 1) { \ + if((str_len - (pos)) < chars_need) {\ + *newpos = pos; \ + *status = FAILURE; \ + return 0; \ + } \ + } else { \ + if((str_len - (pos)) < chars_need) {\ + *newpos = pos + 1; \ + *status = FAILURE; \ + return 0; \ + } \ } /* {{{ get_next_char -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/ext/standard/html.c branches/PHP_5_3/ext/standard/html.c trunk/ext/standard/html.c
moriyoshiMon, 12 Oct 2009 14:29:45 + Revision: http://svn.php.net/viewvc?view=revision&revision=289567 Log: - Bug #49785: take 4 - typo. this flaw is unharmful since the return value of get_next_char() is only used when UTF-8 is specified to the third argument. Bug: http://bugs.php.net/49785 (Closed) htmlspecialchars() should check byte sequence more strictly Changed paths: U php/php-src/branches/PHP_5_2/ext/standard/html.c U php/php-src/branches/PHP_5_3/ext/standard/html.c U php/php-src/trunk/ext/standard/html.c Modified: php/php-src/branches/PHP_5_2/ext/standard/html.c === --- php/php-src/branches/PHP_5_2/ext/standard/html.c2009-10-12 14:26:47 UTC (rev 289566) +++ php/php-src/branches/PHP_5_2/ext/standard/html.c2009-10-12 14:29:45 UTC (rev 289567) @@ -689,7 +689,7 @@ MB_WRITE(this_char); MB_WRITE(next_char); MB_WRITE(next2_char); - this_char = (this_char << 16) | (next_char << 8) | next_char; + this_char = (this_char << 16) | (next_char << 8) | next2_char; } else { MB_FAILURE(pos); } Modified: php/php-src/branches/PHP_5_3/ext/standard/html.c === --- php/php-src/branches/PHP_5_3/ext/standard/html.c2009-10-12 14:26:47 UTC (rev 289566) +++ php/php-src/branches/PHP_5_3/ext/standard/html.c2009-10-12 14:29:45 UTC (rev 289567) @@ -688,7 +688,7 @@ MB_WRITE(this_char); MB_WRITE(next_char); MB_WRITE(next2_char); - this_char = (this_char << 16) | (next_char << 8) | next_char; + this_char = (this_char << 16) | (next_char << 8) | next2_char; } else { MB_FAILURE(pos); } Modified: php/php-src/trunk/ext/standard/html.c === --- php/php-src/trunk/ext/standard/html.c 2009-10-12 14:26:47 UTC (rev 289566) +++ php/php-src/trunk/ext/standard/html.c 2009-10-12 14:29:45 UTC (rev 289567) @@ -694,7 +694,7 @@ MB_WRITE(this_char); MB_WRITE(next_char); MB_WRITE(next2_char); - this_char = (this_char << 16) | (next_char << 8) | next_char; + this_char = (this_char << 16) | (next_char << 8) | next2_char; } else { MB_FAILURE(pos); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/ext/standard/html.c branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt branches/PHP_5_3/ext/standard/html.c branches/PHP_5_3/ext/standard/tests/str
moriyoshiTue, 13 Oct 2009 05:18:37 + Revision: http://svn.php.net/viewvc?view=revision&revision=289605 Log: - Bug #49785: take 5. What the hell happened to me... Bug: http://bugs.php.net/49785 (Closed) htmlspecialchars() should check byte sequence more strictly Changed paths: U php/php-src/branches/PHP_5_2/ext/standard/html.c U php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt U php/php-src/branches/PHP_5_3/ext/standard/html.c U php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt U php/php-src/trunk/ext/standard/html.c U php/php-src/trunk/ext/standard/tests/strings/bug49785.phpt Modified: php/php-src/branches/PHP_5_2/ext/standard/html.c === --- php/php-src/branches/PHP_5_2/ext/standard/html.c 2009-10-13 04:32:39 UTC (rev 289604) +++ php/php-src/branches/PHP_5_2/ext/standard/html.c 2009-10-13 05:18:37 UTC (rev 289605) @@ -539,19 +539,18 @@ c = str[pos]; if (c < 0x80) { MB_WRITE(c); -this_char = c; + this_char = c; pos++; } else if (c < 0xc0) { MB_FAILURE(pos); } else if (c < 0xe0) { CHECK_LEN(pos, 2); if (str[pos + 1] < 0x80 || str[pos + 1] > 0xbf) { -MB_FAILURE(pos); + MB_FAILURE(pos); } this_char = ((c & 0x1f) << 6) | (str[pos + 1] & 0x3f); if (this_char < 0x80) { - *status = FAILURE; - return 0; + MB_FAILURE(pos); } MB_WRITE((unsigned char)c); MB_WRITE((unsigned char)str[pos + 1]); @@ -559,14 +558,14 @@ } else if (c < 0xf0) { CHECK_LEN(pos, 3); if (str[pos + 1] < 0x80 || str[pos + 1] > 0xbf) { -MB_FAILURE(pos); + MB_FAILURE(pos); } if (str[pos + 2] < 0x80 || str[pos + 2] > 0xbf) { -MB_FAILURE(pos); + MB_FAILURE(pos); } this_char = ((c & 0x0f) << 12) | ((str[pos + 1] & 0x3f) << 6) | (str[pos + 2] & 0x3f); if (this_char < 0x800) { -MB_FAILURE(pos); + MB_FAILURE(pos); } MB_WRITE((unsigned char)c); MB_WRITE((unsigned char)str[pos + 1]); @@ -575,17 +574,17 @@ } else if (c < 0xf8) { CHECK_LEN(pos, 4); if (str[pos + 1] < 0x80 || str[pos + 1] > 0xbf) { -MB_FAILURE(pos); + MB_FAILURE(pos); } if (str[pos + 2] < 0x80 || str[pos + 2] > 0xbf) { -MB_FAILURE(pos); + MB_FAILURE(pos); } if (str[pos + 3] < 0x80 || str[pos + 3] > 0xbf) { -MB_FAILURE(pos); + MB_FAILURE(pos); } this_char = ((c & 0x07) << 18) | ((str[pos + 1] & 0x3f) << 12) | ((str[pos + 2] & 0x3f) << 6) | (str[pos + 3] & 0x3f); if (this_char < 0x1) { -MB_FAILURE(pos); + MB_FAILURE(pos); } MB_WRITE((unsigned char)c); MB_WRITE((unsigned char)str[pos + 1]); @@ -593,7 +592,7 @@ MB_WRITE((unsigned char)str[pos + 3]); pos += 4; } else { -MB_FAILURE(pos); + MB_FAILURE(pos); } } break; Modified: php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt === --- php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt 2009-10-13 04:32:39 UTC (rev 289604) +++ php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt 2009-10-13 05:18:37 UTC (rev 289605) @@ -36,6 +36,12 @@ var_dump(_bin2hex(htmlentities("\xf8\x88\x80\x80\x80", ENT_QUOTES, "UTF-8"))); echo "--\n"; +// UTF-8: with ENT_IGNORE +var_dump(_bin2hex(htmlentities("\xc0\xa0\xc2\x80", ENT_QUOTES | ENT_IGNORE, "UTF-8"))); +var_dump(_bin2hex(htmlentities("\xe0\x80\x80\xe0\xa0\x80", ENT_QUOTES | ENT_IGNORE, "UTF-8"))); +var_dump(_bin2hex(htmlentities("\xf0\x80\x80\x80\xf0\x90\x80\x80", ENT_QUOTES | ENT_IGNORE, "UTF-8"))); + +echo "--\n"; // UTF-8: alternative (invalid) UTF-8 sequence var_dump(_bin2hex(htmlspecialchars("\xc0\xa6", ENT_QUOTES, 'UTF-8'))); var_dump(_bin2hex(htmlspecialchars("\xe0\x80\xa6", ENT_QUOTES, 'UTF-8'))); @@ -155,6 +161,10 @@ string(0) "" string(0) "" -- +string(4) "c280" +string(6) "e0a080" +string(8) "f0908080" +-- string(0) "" string(0) "" string(0) "" Modified: php/php-src/branches/PHP_5_3/ext/standard/html.c === --- php/php-src/branches/PHP_5_3/ext/standard/html.c 2009-10-13 04:32:39 UTC (rev 289604) +++ php/php-src/branches/PHP_5_3/ext/standard/html.c 2009-10-13 05:18:37 UTC (rev 289605) @@ -538,19 +538,18 @@ c = str[pos]; if (c < 0x80) { MB_WRITE(c); -this_char = c; + this_char = c; pos++; } else if (c < 0xc0) { MB_FAILURE(pos); } else if (c < 0xe0) { CHECK_LEN(pos, 2); if (str[pos + 1] < 0x80 || str[pos + 1] > 0
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/ext/standard/html.c branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt branches/PHP_5_3/ext/standard/html.c branches/PHP_5_3/ext/standard/tests/str
moriyoshiMon, 07 Dec 2009 15:41:43 + Revision: http://svn.php.net/viewvc?view=revision&revision=291821 Log: - Take account of surrogate pairs. Changed paths: U php/php-src/branches/PHP_5_2/ext/standard/html.c U php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt U php/php-src/branches/PHP_5_3/ext/standard/html.c U php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt U php/php-src/trunk/ext/standard/html.c U php/php-src/trunk/ext/standard/tests/strings/bug49785.phpt Modified: php/php-src/branches/PHP_5_2/ext/standard/html.c === --- php/php-src/branches/PHP_5_2/ext/standard/html.c2009-12-07 15:34:13 UTC (rev 291820) +++ php/php-src/branches/PHP_5_2/ext/standard/html.c2009-12-07 15:41:43 UTC (rev 291821) @@ -566,6 +566,8 @@ this_char = ((c & 0x0f) << 12) | ((str[pos + 1] & 0x3f) << 6) | (str[pos + 2] & 0x3f); if (this_char < 0x800) { MB_FAILURE(pos); + } else if (this_char >= 0xd800 && this_char <= 0xdfff) { + MB_FAILURE(pos); } MB_WRITE((unsigned char)c); MB_WRITE((unsigned char)str[pos + 1]); Modified: php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt === --- php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt 2009-12-07 15:34:13 UTC (rev 291820) +++ php/php-src/branches/PHP_5_2/ext/standard/tests/strings/bug49785.phpt 2009-12-07 15:41:43 UTC (rev 291821) @@ -36,10 +36,14 @@ var_dump(_bin2hex(htmlentities("\xf8\x88\x80\x80\x80", ENT_QUOTES, "UTF-8"))); echo "--\n"; -// UTF-8: alternative (invalid) UTF-8 sequence +// UTF-8: alternative (invalid) UTF-8 sequence / surrogate pairs var_dump(_bin2hex(htmlspecialchars("\xc0\xa6", ENT_QUOTES, 'UTF-8'))); var_dump(_bin2hex(htmlspecialchars("\xe0\x80\xa6", ENT_QUOTES, 'UTF-8'))); var_dump(_bin2hex(htmlspecialchars("\xf0\x80\x80\xa6", ENT_QUOTES, 'UTF-8'))); +var_dump(_bin2hex(htmlspecialchars("\xec\xbf\xbf", ENT_QUOTES, 'UTF-8'))); +var_dump(_bin2hex(htmlspecialchars("\xed\xa0\x80", ENT_QUOTES, 'UTF-8'))); +var_dump(_bin2hex(htmlspecialchars("\xed\xbf\xbf", ENT_QUOTES, 'UTF-8'))); +var_dump(_bin2hex(htmlspecialchars("\xee\x80\x80", ENT_QUOTES, 'UTF-8'))); // Shift_JIS: non-lead byte >= 0x80 var_dump(_bin2hex(htmlspecialchars("\x80", ENT_QUOTES, 'Shift_JIS'))); @@ -158,6 +162,10 @@ string(0) "" string(0) "" string(0) "" +string(6) "ecbfbf" +string(0) "" +string(0) "" +string(6) "ee8080" string(2) "80" string(2) "a0" string(2) "a1" Modified: php/php-src/branches/PHP_5_3/ext/standard/html.c === --- php/php-src/branches/PHP_5_3/ext/standard/html.c2009-12-07 15:34:13 UTC (rev 291820) +++ php/php-src/branches/PHP_5_3/ext/standard/html.c2009-12-07 15:41:43 UTC (rev 291821) @@ -565,6 +565,8 @@ this_char = ((c & 0x0f) << 12) | ((str[pos + 1] & 0x3f) << 6) | (str[pos + 2] & 0x3f); if (this_char < 0x800) { MB_FAILURE(pos); + } else if (this_char >= 0xd800 && this_char <= 0xdfff) { + MB_FAILURE(pos); } MB_WRITE((unsigned char)c); MB_WRITE((unsigned char)str[pos + 1]); Modified: php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt === --- php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt 2009-12-07 15:34:13 UTC (rev 291820) +++ php/php-src/branches/PHP_5_3/ext/standard/tests/strings/bug49785.phpt 2009-12-07 15:41:43 UTC (rev 291821) @@ -42,10 +42,14 @@ var_dump(_bin2hex(htmlentities("\xf0\x80\x80\x80\xf0\x90\x80\x80", ENT_QUOTES | ENT_IGNORE, "UTF-8"))); echo "--\n"; -// UTF-8: alternative (invalid) UTF-8 sequence +// UTF-8: alternative (invalid) UTF-8 sequence / surrogate pairs var_dump(_bin2hex(htmlspecialchars("\xc0\xa6", ENT_QUOTES, 'UTF-8'))); var_dump(_bin2hex(htmlspecialchars("\xe0\x80\xa6", ENT_QUOTES, 'UTF-8'))); var_dump(_bin2hex(htmlspecialchars("\xf0\x80\x80\xa6", ENT_QUOTES, 'UTF-8'))); +var_dump(_bin2hex(htmlspecialchars("\xec\xbf\xbf", ENT_QUOTES, 'UTF-8'))); +var_dump(_bin2hex(htmlspecialchars("\xed\xa0\x80", ENT_QUOTES, 'UTF-8'))); +var_dump(_bin2hex(htmlspecialchars("\xed\xbf\xbf", ENT_QUOTES, 'UTF-8')
[PHP-CVS] svn: /php/php-src/branches/PHP_5_3/ NEWS ext/standard/html.c ext/standard/tests/strings/html_entity_decode_html4.phpt ext/standard/tests/strings/htmlentities_html4.phpt
moriyoshiTue, 22 Dec 2009 05:50:34 + Revision: http://svn.php.net/viewvc?view=revision&revision=292467 Log: - Fix bug #46478 (htmlentities() uses obsolete mapping table for character entity references) Bug: http://bugs.php.net/46478 (Assigned) htmlentities() uses obsolete mapping table for character entity references Changed paths: U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/ext/standard/html.c A php/php-src/branches/PHP_5_3/ext/standard/tests/strings/html_entity_decode_html4.phpt A php/php-src/branches/PHP_5_3/ext/standard/tests/strings/htmlentities_html4.phpt Modified: php/php-src/branches/PHP_5_3/NEWS === --- php/php-src/branches/PHP_5_3/NEWS 2009-12-22 03:19:47 UTC (rev 292466) +++ php/php-src/branches/PHP_5_3/NEWS 2009-12-22 05:50:34 UTC (rev 292467) @@ -134,6 +134,8 @@ - Fixed bug #49174 (crash when extending PDOStatement and trying to set queryString property). (Felipe) - Fixed bug #47848 (importNode doesn't preserve attribute namespaces). (Rob) +- Fixed bug #46478 (htmlentities() uses obsolete mapping table for character + entity references). (Moriyoshi) - Fixed bug #45599 (strip_tags() truncates rest of string with invalid attribute). (Ilia, hradtke) - Fixed bug #45120 (PDOStatement->execute() returns true then false for same Modified: php/php-src/branches/PHP_5_3/ext/standard/html.c === --- php/php-src/branches/PHP_5_3/ext/standard/html.c 2009-12-22 03:19:47 UTC (rev 292466) +++ php/php-src/branches/PHP_5_3/ext/standard/html.c 2009-12-22 05:50:34 UTC (rev 292467) @@ -144,7 +144,7 @@ NULL, NULL, NULL, NULL, NULL, NULL, NULL, "thetasym", "upsih", NULL, NULL, NULL, - "piv" + "piv" }; static entity_table_t ent_uni_punct[] = { @@ -154,7 +154,7 @@ NULL, NULL, NULL, "ndash", "mdash", NULL, NULL, NULL, /* 8216 */ "lsquo", "rsquo", "sbquo", NULL, "ldquo", "rdquo", "bdquo", NULL, - "dagger", "Dagger", "bull", NULL, NULL, NULL, "hellip", + "dagger", "Dagger", "bull", NULL, NULL, NULL, "hellip", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "permil", NULL, /* 8242 */ "prime", "Prime", NULL, NULL, NULL, NULL, NULL, "lsaquo", "rsaquo", NULL, @@ -194,39 +194,39 @@ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8656 (0x21d0) */ - "lArr", "uArr", "rArr", "dArr", "hArr", "vArr", NULL, NULL, - NULL, NULL, "lAarr", "rAarr", NULL, "rarrw", NULL, NULL, + "lArr", "uArr", "rArr", "dArr", "hArr", NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8672 (0x21e0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8704 (0x2200) */ - "forall", "comp", "part", "exist", "nexist", "empty", NULL, "nabla", - "isin", "notin", "epsis", "ni", "notni", "bepsi", NULL, "prod", + "forall", NULL, "part", "exist", NULL, "empty", NULL, "nabla", + "isin", "notin", NULL, "ni", NULL, NULL, NULL, "prod", /* 8720 (0x2210) */ - "coprod", "sum", "minus", "mnplus", "plusdo", NULL, "setmn", "lowast", - "compfn", NULL, "radic", NULL, NULL, "prop", "infin", "ang90", + NULL, "sum", "minus", NULL, NULL, NULL, NULL, "lowast", + NULL, NULL, "radic", NULL, NULL, "prop", "infin", NULL, /* 8736 (0x2220) */ - "ang", "angmsd", "angsph", "mid", "nmid", "par", "npar", "and", - "or", "cap", "cup", "int", NULL, NULL, "conint", NULL, + "ang", NULL, NULL, NULL, NULL, NULL, NULL, "and", + "or", "cap", "cup", "int", NULL, NULL, NULL, NULL, /* 8752 (0x2230) */ - NULL, NULL, NULL, NULL, "there4", "becaus", NULL, NULL, - NULL, NULL, NULL, NULL, "sim", "bsim", NULL, NULL, + NULL, NULL, NULL, NULL, "there4", NULL, NULL, NULL, + NULL, NULL, NULL, NULL, "sim", NULL, NULL, NULL, /* 8768 (0x2240) */ - "wreath", "nsim", NULL, "sime", "nsime", "cong", NULL, "ncong", - "asymp", "nap", "ape", NULL, "bcong", "asymp", "bump", "bumpe", + NULL, NULL, NULL, NULL, NULL, "cong", NULL, NULL, + "asymp", NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8784 (0x2250) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8800 (0x2260) */ - "ne", "equiv", NULL, NULL, "le", "ge", "lE", "gE", - "lnE", "gnE", "Lt", "Gt", "twixt", NULL, "nlt", "ngt", + "ne", "equiv", NULL, NULL, "le", "ge", NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8816 (0x2270) */ - "nles", "nges", "lsim", "gsim", NULL, NULL, "lg", "gl", - NULL, NULL, "pr", "sc", "cupre", "sscue", "prsim", "scsim", + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8832 (0x2280) */ - "npr", "nsc", "sub", "sup", "nsub", "nsup", "sube", "supe", + NULL, NULL, "sub", "sup", "nsub", NULL, "sube", "supe", NULL, NULL, N
Re: [PHP-CVS] svn: /php/php-src/branches/PHP_5_3/ NEWS ext/standard/html.c ext/standard/tests/strings/html_entity_decode_html4.phpt ext/standard/tests/strings/htmlentities_html4.phpt
I just forgot about HEAD. The change will be available shortly. Moriyoshi On Thu, Dec 24, 2009 at 5:56 AM, Jani Taskinen wrote: > You seem to have forgot to commit to HEAD first and then _merge_ to branch > again. Or was this something that isn't needed in HEAD or what? > > --Jani > > > 22.12.2009 7:50, Moriyoshi Koizumi wrote: >> >> moriyoshi Tue, 22 Dec 2009 05:50:34 + >> >> Revision: http://svn.php.net/viewvc?view=revision&revision=292467 >> >> Log: >> - Fix bug #46478 (htmlentities() uses obsolete mapping table for character >> entity references) >> >> Bug: http://bugs.php.net/46478 (Assigned) htmlentities() uses obsolete >> mapping table for character entity references >> >> Changed paths: >> U php/php-src/branches/PHP_5_3/NEWS >> U php/php-src/branches/PHP_5_3/ext/standard/html.c >> A >> php/php-src/branches/PHP_5_3/ext/standard/tests/strings/html_entity_decode_html4.phpt >> A >> php/php-src/branches/PHP_5_3/ext/standard/tests/strings/htmlentities_html4.phpt >> >> > > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/trunk/ext/standard/ html.c tests/strings/html_entity_decode_html4.phpt tests/strings/htmlentities_html4.phpt
moriyoshiThu, 24 Dec 2009 09:32:52 + Revision: http://svn.php.net/viewvc?view=revision&revision=292588 Log: - MFB: Fix bug #46478 (htmlentities() uses obsolete mapping table for character entity references) (this should be gone to r292467) Bug: http://bugs.php.net/46478 (Closed) htmlentities() uses obsolete mapping table for character entity references Changed paths: U php/php-src/trunk/ext/standard/html.c A php/php-src/trunk/ext/standard/tests/strings/html_entity_decode_html4.phpt A php/php-src/trunk/ext/standard/tests/strings/htmlentities_html4.phpt Modified: php/php-src/trunk/ext/standard/html.c === --- php/php-src/trunk/ext/standard/html.c 2009-12-24 09:00:56 UTC (rev 292587) +++ php/php-src/trunk/ext/standard/html.c 2009-12-24 09:32:52 UTC (rev 292588) @@ -150,7 +150,7 @@ NULL, NULL, NULL, NULL, NULL, NULL, NULL, "thetasym", "upsih", NULL, NULL, NULL, - "piv" + "piv" }; static entity_table_t ent_uni_punct[] = { @@ -160,7 +160,7 @@ NULL, NULL, NULL, "ndash", "mdash", NULL, NULL, NULL, /* 8216 */ "lsquo", "rsquo", "sbquo", NULL, "ldquo", "rdquo", "bdquo", NULL, - "dagger", "Dagger", "bull", NULL, NULL, NULL, "hellip", + "dagger", "Dagger", "bull", NULL, NULL, NULL, "hellip", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "permil", NULL, /* 8242 */ "prime", "Prime", NULL, NULL, NULL, NULL, NULL, "lsaquo", "rsaquo", NULL, @@ -200,39 +200,39 @@ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8656 (0x21d0) */ - "lArr", "uArr", "rArr", "dArr", "hArr", "vArr", NULL, NULL, - NULL, NULL, "lAarr", "rAarr", NULL, "rarrw", NULL, NULL, + "lArr", "uArr", "rArr", "dArr", "hArr", NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8672 (0x21e0) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8704 (0x2200) */ - "forall", "comp", "part", "exist", "nexist", "empty", NULL, "nabla", - "isin", "notin", "epsis", "ni", "notni", "bepsi", NULL, "prod", + "forall", NULL, "part", "exist", NULL, "empty", NULL, "nabla", + "isin", "notin", NULL, "ni", NULL, NULL, NULL, "prod", /* 8720 (0x2210) */ - "coprod", "sum", "minus", "mnplus", "plusdo", NULL, "setmn", "lowast", - "compfn", NULL, "radic", NULL, NULL, "prop", "infin", "ang90", + NULL, "sum", "minus", NULL, NULL, NULL, NULL, "lowast", + NULL, NULL, "radic", NULL, NULL, "prop", "infin", NULL, /* 8736 (0x2220) */ - "ang", "angmsd", "angsph", "mid", "nmid", "par", "npar", "and", - "or", "cap", "cup", "int", NULL, NULL, "conint", NULL, + "ang", NULL, NULL, NULL, NULL, NULL, NULL, "and", + "or", "cap", "cup", "int", NULL, NULL, NULL, NULL, /* 8752 (0x2230) */ - NULL, NULL, NULL, NULL, "there4", "becaus", NULL, NULL, - NULL, NULL, NULL, NULL, "sim", "bsim", NULL, NULL, + NULL, NULL, NULL, NULL, "there4", NULL, NULL, NULL, + NULL, NULL, NULL, NULL, "sim", NULL, NULL, NULL, /* 8768 (0x2240) */ - "wreath", "nsim", NULL, "sime", "nsime", "cong", NULL, "ncong", - "asymp", "nap", "ape", NULL, "bcong", "asymp", "bump", "bumpe", + NULL, NULL, NULL, NULL, NULL, "cong", NULL, NULL, + "asymp", NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8784 (0x2250) */ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8800 (0x2260) */ - "ne", "equiv", NULL, NULL, "le", "ge", "lE", "gE", - "lnE", "gnE", "Lt", "Gt", "twixt", NULL, "nlt", "ngt", + "ne", "equiv", NULL, NULL, "le", "ge", NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8816 (0x2270) */ - "nles", "nges", "lsim", "gsim", NULL, NULL, "lg", "gl", - NULL, NULL, "pr", "sc", "cupre", "sscue", "prsim", "scsim", + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8832 (0x2280) */ - "npr", "nsc", "sub", "sup", "nsub", "nsup", "sube", "supe", + NULL, NULL, "sub", "sup", "nsub", NULL, "sube", "supe", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 8848 (0x2290) */ NULL, NULL, NULL, NULL, NULL, "oplus", NULL, "otimes", Added: php/php-src/trunk/ext/standard/tests/strings/html_entity_decode_html4.phpt === --- php/php-src/trunk/ext/standard/tests/strings/html_entity_decode_html4.phpt (rev 0) +++ php/php-src/trunk/ext/standard/tests/strings/html_entity_decode_html4.phpt 2009-12-24 09:32:52 UTC (rev 292588) @@ -0,0 +1,516 @@ +--TEST-- +html_entity_decode() conformance check (HTML 4) +--FILE-- + +--EXPECT-- +22 +26 +3c +3e +c2a0 +c2a1 +c2a2 +c2a3 +c2a4 +c2a5 +c2a6 +c2a7 +c2a8 +c2a9 +c2aa +c2ab +c2ac +c2ad +c2ae +c2af +c2b0 +c2b1 +c2b2 +c2b3 +c2b4 +c2b5 +c2b6 +c2b7 +c2b8 +c2b9 +c2ba +c2bb +c2bc +c2bd +c2be +c2bf +c380 +c381 +c382 +c383 +c384 +c3
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c trunk/ext/mbstring/libmbfl/filters/
moriyoshiSun, 28 Feb 2010 07:49:36 + Revision: http://svn.php.net/viewvc?view=revision&revision=295575 Log: - Whitespaces. Changed paths: U php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c U php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c Modified: php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c === --- php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 04:02:52 UTC (rev 295574) +++ php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 07:49:36 UTC (rev 295575) @@ -153,8 +153,8 @@ w = cp932ext1_ucs_table[s - cp932ext1_ucs_table_min]; } else if (s >= 0 && s < jisx0208_ucs_table_size) { /* X 0208 */ w = jisx0208_ucs_table[s]; - } else if (s >= (84*94)) { /* user (85ku - 94ku) */ - w = s - (84*94) + 0xe000; + } else if (s >= (84 * 94)) {/* user (85ku - 94ku) */ + w = s - (84 * 94) + 0xe000; } } if (w <= 0) { Modified: php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c === --- php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 04:02:52 UTC (rev 295574) +++ php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 07:49:36 UTC (rev 295575) @@ -153,8 +153,8 @@ w = cp932ext1_ucs_table[s - cp932ext1_ucs_table_min]; } else if (s >= 0 && s < jisx0208_ucs_table_size) { /* X 0208 */ w = jisx0208_ucs_table[s]; - } else if (s >= (84*94)) { /* user (85ku - 94ku) */ - w = s - (84*94) + 0xe000; + } else if (s >= (84 * 94)) {/* user (85ku - 94ku) */ + w = s - (84 * 94) + 0xe000; } } if (w <= 0) { Modified: php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c === --- php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 04:02:52 UTC (rev 295574) +++ php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 07:49:36 UTC (rev 295575) @@ -153,8 +153,8 @@ w = cp932ext1_ucs_table[s - cp932ext1_ucs_table_min]; } else if (s >= 0 && s < jisx0208_ucs_table_size) { /* X 0208 */ w = jisx0208_ucs_table[s]; - } else if (s >= (84*94)) { /* user (85ku - 94ku) */ - w = s - (84*94) + 0xe000; + } else if (s >= (84 * 94)) {/* user (85ku - 94ku) */ + w = s - (84 * 94) + 0xe000; } } if (w <= 0) { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c trunk/ext/mbstring/libmbfl/filters/
moriyoshiSun, 28 Feb 2010 09:33:05 + Revision: http://svn.php.net/viewvc?view=revision&revision=295576 Log: - Merge from upstream (note: this is no behavioral change, so need not to be merged to 5.3.2 branch) Changed paths: U php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c U php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c Modified: php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c === --- php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 07:49:36 UTC (rev 295575) +++ php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 09:33:05 UTC (rev 295576) @@ -327,8 +327,10 @@ c1 = 0; c2 = cp932ext1_ucs_table_max - cp932ext1_ucs_table_min; while (c1 < c2) { /* CP932 vendor ext1 (13ku) */ + const int oh = cp932ext1_ucs_table_min / 94; + if (c == cp932ext1_ucs_table[c1]) { - s1 = ((c1/94 + 0x2d) << 8) + (c1%94 + 0x21); + s1 = ((c1 / 94 + oh + 0x21) << 8) + (c1 % 94 + 0x21); break; } c1++; Modified: php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c === --- php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 07:49:36 UTC (rev 295575) +++ php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 09:33:05 UTC (rev 295576) @@ -327,8 +327,10 @@ c1 = 0; c2 = cp932ext1_ucs_table_max - cp932ext1_ucs_table_min; while (c1 < c2) { /* CP932 vendor ext1 (13ku) */ + const int oh = cp932ext1_ucs_table_min / 94; + if (c == cp932ext1_ucs_table[c1]) { - s1 = ((c1/94 + 0x2d) << 8) + (c1%94 + 0x21); + s1 = ((c1 / 94 + oh + 0x21) << 8) + (c1 % 94 + 0x21); break; } c1++; Modified: php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c === --- php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 07:49:36 UTC (rev 295575) +++ php/php-src/trunk/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c 2010-02-28 09:33:05 UTC (rev 295576) @@ -327,8 +327,10 @@ c1 = 0; c2 = cp932ext1_ucs_table_max - cp932ext1_ucs_table_min; while (c1 < c2) { /* CP932 vendor ext1 (13ku) */ + const int oh = cp932ext1_ucs_table_min / 94; + if (c == cp932ext1_ucs_table[c1]) { - s1 = ((c1/94 + 0x2d) << 8) + (c1%94 + 0x21); + s1 = ((c1 / 94 + oh + 0x21) << 8) + (c1 % 94 + 0x21); break; } c1++; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/NEWS branches/PHP_5_2/acinclude.m4 branches/PHP_5_2/ext/iconv/iconv.c branches/PHP_5_2/ext/iconv/php_iconv.h branches/PHP_5_3/acinclude.m4 branches/PHP_5_
moriyoshiFri, 05 Mar 2010 09:12:13 + Revision: http://svn.php.net/viewvc?view=revision&revision=295848 Log: - Fixed bug #49267 (linking fails for iconv) Bug: http://bugs.php.net/49267 (No Feedback) Linking fails for iconv: "Undefined symbols: _libiconv" Changed paths: U php/php-src/branches/PHP_5_2/NEWS U php/php-src/branches/PHP_5_2/acinclude.m4 U php/php-src/branches/PHP_5_2/ext/iconv/iconv.c U php/php-src/branches/PHP_5_2/ext/iconv/php_iconv.h U php/php-src/branches/PHP_5_3/acinclude.m4 U php/php-src/branches/PHP_5_3/ext/iconv/iconv.c U php/php-src/branches/PHP_5_3/ext/iconv/php_iconv.h U php/php-src/trunk/acinclude.m4 U php/php-src/trunk/ext/iconv/iconv.c U php/php-src/trunk/ext/iconv/php_iconv.h Modified: php/php-src/branches/PHP_5_2/NEWS === --- php/php-src/branches/PHP_5_2/NEWS 2010-03-05 06:45:28 UTC (rev 295847) +++ php/php-src/branches/PHP_5_2/NEWS 2010-03-05 09:12:13 UTC (rev 295848) @@ -11,6 +11,7 @@ an invalid option is provided). (Ilia) - Fixed bug #51086 (DBA DB4 doesn't work with Berkeley DB 4.8). (Chris Jones) - Fixed bug #51062 (DBA DB4 uses mismatched headers and libraries). (Chris Jones) +- Fixed bug #49267 (Linking fails for iconv). (Moriyosh) - Fixed bug #43314 (iconv_mime_encode(), broken Q scheme). (Rasmus) - Fixed bug #23229 (syslog function truncates messages). (Adam) Modified: php/php-src/branches/PHP_5_2/acinclude.m4 === --- php/php-src/branches/PHP_5_2/acinclude.m4 2010-03-05 06:45:28 UTC (rev 295847) +++ php/php-src/branches/PHP_5_2/acinclude.m4 2010-03-05 09:12:13 UTC (rev 295848) @@ -2424,6 +2424,7 @@ echo > ext/iconv/php_have_libiconv.h echo > ext/iconv/php_have_iconv.h echo > ext/iconv/php_php_iconv_impl.h + echo > ext/iconv/php_have_libiconv_in_libiconv.h echo > ext/iconv/php_php_iconv_h_path.h echo > ext/iconv/php_iconv_supports_errno.h @@ -2471,6 +2472,8 @@ found_iconv=yes PHP_DEFINE(HAVE_LIBICONV,1,[ext/iconv]) AC_DEFINE(HAVE_LIBICONV,1,[ ]) +PHP_DEFINE([HAVE_LIBICONV_IN_LIBICONV],1,[ext/iconv]) +AC_DEFINE([HAVE_LIBICONV_IN_LIBICONV],1,[iconv() is aliased to libiconv() in -liconv]) ], [ PHP_CHECK_LIBRARY($iconv_lib_name, iconv, [ found_iconv=yes Modified: php/php-src/branches/PHP_5_2/ext/iconv/iconv.c === --- php/php-src/branches/PHP_5_2/ext/iconv/iconv.c 2010-03-05 06:45:28 UTC (rev 295847) +++ php/php-src/branches/PHP_5_2/ext/iconv/iconv.c 2010-03-05 09:12:13 UTC (rev 295848) @@ -193,7 +193,7 @@ } /* }}} */ -#ifdef HAVE_LIBICONV +#if defined(HAVE_LIBICONV) && defined(HAVE_LIBICONV_IN_LIBICONV) #define iconv libiconv #endif Modified: php/php-src/branches/PHP_5_2/ext/iconv/php_iconv.h === --- php/php-src/branches/PHP_5_2/ext/iconv/php_iconv.h 2010-03-05 06:45:28 UTC (rev 295847) +++ php/php-src/branches/PHP_5_2/ext/iconv/php_iconv.h 2010-03-05 09:12:13 UTC (rev 295848) @@ -35,6 +35,7 @@ #ifdef PHP_ATOM_INC #include "ext/iconv/php_have_iconv.h" #include "ext/iconv/php_have_libiconv.h" +#include "ext/iconv/php_have_libiconv_in_libiconv.h" #include "ext/iconv/php_have_glibc_iconv.h" #include "ext/iconv/php_have_bsd_iconv.h" #include "ext/iconv/php_iconv_supports_errno.h" Modified: php/php-src/branches/PHP_5_3/acinclude.m4 === --- php/php-src/branches/PHP_5_3/acinclude.m4 2010-03-05 06:45:28 UTC (rev 295847) +++ php/php-src/branches/PHP_5_3/acinclude.m4 2010-03-05 09:12:13 UTC (rev 295848) @@ -2424,6 +2424,7 @@ echo > ext/iconv/php_have_libiconv.h echo > ext/iconv/php_have_iconv.h echo > ext/iconv/php_php_iconv_impl.h + echo > ext/iconv/php_have_libiconv_in_libiconv.h echo > ext/iconv/php_php_iconv_h_path.h echo > ext/iconv/php_iconv_supports_errno.h @@ -2471,6 +2472,8 @@ found_iconv=yes PHP_DEFINE(HAVE_LIBICONV,1,[ext/iconv]) AC_DEFINE(HAVE_LIBICONV,1,[ ]) +PHP_DEFINE([HAVE_LIBICONV_IN_LIBICONV],1,[ext/iconv]) +AC_DEFINE([HAVE_LIBICONV_IN_LIBICONV],1,[iconv() is aliased to libiconv() in -liconv]) ], [ PHP_CHECK_LIBRARY($iconv_lib_name, iconv, [ found_iconv=yes Modified: php/php-src/branches/PHP_5_3/ext/iconv/iconv.c === --- php/php-src/branches/PHP_5_3/ext/iconv/iconv.c 2010-03-05 06:45:28 UTC (rev 295847) +++ php/php-src/branches/PHP_5_3/ext/iconv/iconv.c 2010-03-05 09:12:13 UTC (rev 295848) @@ -182,7 +182,7 @@ } /* }}} */ -#ifdef HAVE_LIBICONV +#if defined(HAVE_LIBICONV) && defined(HAVE_LIBICONV_IN_LIBICONV) #define iconv libiconv #endif M
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/ext/mbstring/config.m4 branches/PHP_5_3/ext/mbstring/config.w32 branches/PHP_5_3/ext/mbstring/libmbfl/Makefile.am branches/PHP_5_3/ext/mbstring/libmbfl/Ma
moriyoshiFri, 12 Mar 2010 04:55:37 + Revision: http://svn.php.net/viewvc?view=revision&revision=296101 Log: - Update the bundled libmbfl to the latest on upstream. Changed paths: U php/php-src/branches/PHP_5_3/ext/mbstring/config.m4 U php/php-src/branches/PHP_5_3/ext/mbstring/config.w32 U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/Makefile.am D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/Makefile.bcc32 D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/config.h.bcc32 U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/config.h.in D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/config.h.vc6 U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/configure.in U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/Makefile.am D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/Makefile.bcc32 A php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c A php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_cp5022x.h U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_cp51932.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_cp932.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_cp932.h U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_jis.c A php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_sjis_open.c A php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_sjis_open.h A php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_tl_jisx0201_jisx0208.c A php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_tl_jisx0201_jisx0208.h U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/mbfilter_utf7.c A php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/filters/translit_kana_jisx0201_jisx0208.h D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/libmbfl.dsp D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/libmbfl.dsw D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/libmbfl.sln D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/libmbfl.vcproj U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/Makefile.am D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/Makefile.bcc32 U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/eaw_table.h U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfilter.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfilter.h U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfilter_8bit.h U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfilter_pass.h U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfilter_wchar.h U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfl_convert.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfl_convert.h U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfl_encoding.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfl_filter_output.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfl_filter_output.h U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfl_ident.c D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl.def D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl.rc D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mksbcc32.bat U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/nls/Makefile.am D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/nls/Makefile.bcc32 D php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/rules.mak.bcc32 U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/tests/conv_encoding.tests/Makefile.am A php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/tests/conv_encoding.tests/gen_exp.c A php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/tests/conv_encoding.tests/yensign.exp U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/tests/sample.c U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/tests/strcut.tests/iso2022jp.exp U php/php-src/trunk/ext/mbstring/config.m4 U php/php-src/trunk/ext/mbstring/config.w32 U php/php-src/trunk/ext/mbstring/libmbfl/Makefile.am D php/php-src/trunk/ext/mbstring/libmbfl/Makefile.bcc32 D php/php-src/trunk/ext/mbstring/libmbfl/config.h.bcc32 U php/php-src/trunk/ext/mbstring/libmbfl/config.h.in D php/php-src/trunk/ext/mbstring/libmbfl/config.h.vc6
[PHP-CVS] svn: /php/php-src/trunk/ext/standard/ html.c
moriyoshiFri, 12 Mar 2010 14:44:35 + Revision: http://svn.php.net/viewvc?view=revision&revision=296118 Log: - Oops. Changed paths: U php/php-src/trunk/ext/standard/html.c Modified: php/php-src/trunk/ext/standard/html.c === --- php/php-src/trunk/ext/standard/html.c 2010-03-12 13:46:52 UTC (rev 296117) +++ php/php-src/trunk/ext/standard/html.c 2010-03-12 14:44:35 UTC (rev 296118) @@ -747,8 +747,8 @@ return cs_eucjp; case mbfl_no_encoding_sjis: - case mbfl_no_encoding_sjis_win: - case mbfl_no_encoding_sjis_mac: + case mbfl_no_encoding_sjis_open: + case mbfl_no_encoding_cp932: return cs_sjis; case mbfl_no_encoding_cp1252: -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-CVS] svn: /php/php-src/trunk/ext/standard/ html.c
I forgot to apply the patch to trunk at that time. So 5_3 should have been working. Doesn't it? Moriyoshi On Fri, Mar 12, 2010 at 11:53 PM, Felipe Pena wrote: > and 5_3? Thanks. > > 2010/3/12 Moriyoshi Koizumi > >> moriyoshi Fri, 12 Mar 2010 14:44:35 + >> >> Revision: http://svn.php.net/viewvc?view=revision&revision=296118 >> >> Log: >> - Oops. >> >> Changed paths: >> U php/php-src/trunk/ext/standard/html.c >> >> Modified: php/php-src/trunk/ext/standard/html.c >> === >> --- php/php-src/trunk/ext/standard/html.c 2010-03-12 13:46:52 UTC >> (rev 296117) >> +++ php/php-src/trunk/ext/standard/html.c 2010-03-12 14:44:35 UTC >> (rev 296118) >> @@ -747,8 +747,8 @@ >> return cs_eucjp; >> >> case mbfl_no_encoding_sjis: >> - case mbfl_no_encoding_sjis_win: >> - case mbfl_no_encoding_sjis_mac: >> + case mbfl_no_encoding_sjis_open: >> + case mbfl_no_encoding_cp932: >> return cs_sjis; >> >> case mbfl_no_encoding_cp1252: >> >> >> -- >> PHP CVS Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> > > > > -- > Regards, > Felipe Pena > -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/branches/ PHP_5_2/ext/standard/html.c PHP_5_3/ext/standard/html.c PHP_5_4/ext/standard/html.c
moriyoshiFri, 12 Mar 2010 16:19:25 + Revision: http://svn.php.net/viewvc?view=revision&revision=296121 Log: - Forgot to commit this patch. Sorry. Changed paths: U php/php-src/branches/PHP_5_2/ext/standard/html.c U php/php-src/branches/PHP_5_3/ext/standard/html.c U php/php-src/branches/PHP_5_4/ext/standard/html.c Modified: php/php-src/branches/PHP_5_2/ext/standard/html.c === --- php/php-src/branches/PHP_5_2/ext/standard/html.c2010-03-12 15:01:14 UTC (rev 296120) +++ php/php-src/branches/PHP_5_2/ext/standard/html.c2010-03-12 16:19:25 UTC (rev 296121) @@ -742,8 +742,8 @@ return cs_eucjp; case mbfl_no_encoding_sjis: - case mbfl_no_encoding_sjis_win: - case mbfl_no_encoding_sjis_mac: + case mbfl_no_encoding_sjis_open: + case mbfl_no_encoding_cp932: return cs_sjis; case mbfl_no_encoding_cp1252: Modified: php/php-src/branches/PHP_5_3/ext/standard/html.c === --- php/php-src/branches/PHP_5_3/ext/standard/html.c2010-03-12 15:01:14 UTC (rev 296120) +++ php/php-src/branches/PHP_5_3/ext/standard/html.c2010-03-12 16:19:25 UTC (rev 296121) @@ -741,8 +741,8 @@ return cs_eucjp; case mbfl_no_encoding_sjis: - case mbfl_no_encoding_sjis_win: - case mbfl_no_encoding_sjis_mac: + case mbfl_no_encoding_sjis_open: + case mbfl_no_encoding_cp932: return cs_sjis; case mbfl_no_encoding_cp1252: Modified: php/php-src/branches/PHP_5_4/ext/standard/html.c === --- php/php-src/branches/PHP_5_4/ext/standard/html.c2010-03-12 15:01:14 UTC (rev 296120) +++ php/php-src/branches/PHP_5_4/ext/standard/html.c2010-03-12 16:19:25 UTC (rev 296121) @@ -741,8 +741,8 @@ return cs_eucjp; case mbfl_no_encoding_sjis: - case mbfl_no_encoding_sjis_win: - case mbfl_no_encoding_sjis_mac: + case mbfl_no_encoding_sjis_open: + case mbfl_no_encoding_cp932: return cs_sjis; case mbfl_no_encoding_cp1252: -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/branches/PHP_5_2/ext/standard/ html.c
moriyoshiFri, 12 Mar 2010 16:23:18 + Revision: http://svn.php.net/viewvc?view=revision&revision=296122 Log: - Revert accidental commit. Changed paths: U php/php-src/branches/PHP_5_2/ext/standard/html.c Modified: php/php-src/branches/PHP_5_2/ext/standard/html.c === --- php/php-src/branches/PHP_5_2/ext/standard/html.c2010-03-12 16:19:25 UTC (rev 296121) +++ php/php-src/branches/PHP_5_2/ext/standard/html.c2010-03-12 16:23:18 UTC (rev 296122) @@ -742,8 +742,8 @@ return cs_eucjp; case mbfl_no_encoding_sjis: - case mbfl_no_encoding_sjis_open: - case mbfl_no_encoding_cp932: + case mbfl_no_encoding_sjis_win: + case mbfl_no_encoding_sjis_mac: return cs_sjis; case mbfl_no_encoding_cp1252: -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/ext/mbstring/config.w32 branches/PHP_5_2/ext/mbstring/libmbfl/config.h.vc6 branches/PHP_5_2/ext/mbstring/libmbfl/config.h.w32 branches/PHP_5_3/ext/mbstrin
moriyoshiMon, 15 Mar 2010 14:19:51 + Revision: http://svn.php.net/viewvc?view=revision&revision=296242 Log: - Fix win32 build. (notified by Rob. Thanks) Changed paths: U php/php-src/branches/PHP_5_2/ext/mbstring/config.w32 D php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/config.h.vc6 A php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/config.h.w32 A php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/config.h.w32 U php/php-src/trunk/ext/mbstring/config.w32 A php/php-src/trunk/ext/mbstring/libmbfl/config.h.w32 Modified: php/php-src/branches/PHP_5_2/ext/mbstring/config.w32 === --- php/php-src/branches/PHP_5_2/ext/mbstring/config.w322010-03-15 13:56:12 UTC (rev 296241) +++ php/php-src/branches/PHP_5_2/ext/mbstring/config.w322010-03-15 14:19:51 UTC (rev 296242) @@ -7,7 +7,7 @@ if (PHP_MBSTRING == "yes") { - FSO.CopyFile("ext\\mbstring\\libmbfl\\config.h.vc6", + FSO.CopyFile("ext\\mbstring\\libmbfl\\config.h.w32", "ext\\mbstring\\libmbfl\\config.h", true); FSO.CopyFile("ext\\mbstring\\oniguruma\\win32\\config.h", "ext\\mbstring\\oniguruma\\config.h", true); Deleted: php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/config.h.vc6 === --- php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/config.h.vc6 2010-03-15 13:56:12 UTC (rev 296241) +++ php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/config.h.vc6 2010-03-15 14:19:51 UTC (rev 296242) @@ -1,12 +0,0 @@ -#define HAVE_STDIO_H 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STDDEF_H 1 -#define HAVE_ASSERT_H 1 -#define HAVE_MEMORY_H 1 -/* #undef HAVE_STRINGS_H */ -#define HAVE_STRING_H 1 -/* #undef HAVE_STRCASECMP */ -#define HAVE_STRICMP 1 -#define HAVE_WIN32_NATIVE_THREAD 1 -#define USE_WIN32_NATIVE_THREAD 1 -#define ENABLE_THREADS 1 Added: php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/config.h.w32 === --- php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/config.h.w32 (rev 0) +++ php/php-src/branches/PHP_5_2/ext/mbstring/libmbfl/config.h.w32 2010-03-15 14:19:51 UTC (rev 296242) @@ -0,0 +1,12 @@ +#define HAVE_STDIO_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDDEF_H 1 +#define HAVE_ASSERT_H 1 +#define HAVE_MEMORY_H 1 +/* #undef HAVE_STRINGS_H */ +#define HAVE_STRING_H 1 +/* #undef HAVE_STRCASECMP */ +#define HAVE_STRICMP 1 +#define HAVE_WIN32_NATIVE_THREAD 1 +#define USE_WIN32_NATIVE_THREAD 1 +#define ENABLE_THREADS 1 Added: php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/config.h.w32 === --- php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/config.h.w32 (rev 0) +++ php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/config.h.w32 2010-03-15 14:19:51 UTC (rev 296242) @@ -0,0 +1,12 @@ +#define HAVE_STDIO_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDDEF_H 1 +#define HAVE_ASSERT_H 1 +#define HAVE_MEMORY_H 1 +/* #undef HAVE_STRINGS_H */ +#define HAVE_STRING_H 1 +/* #undef HAVE_STRCASECMP */ +#define HAVE_STRICMP 1 +#define HAVE_WIN32_NATIVE_THREAD 1 +#define USE_WIN32_NATIVE_THREAD 1 +#define ENABLE_THREADS 1 Modified: php/php-src/trunk/ext/mbstring/config.w32 === --- php/php-src/trunk/ext/mbstring/config.w32 2010-03-15 13:56:12 UTC (rev 296241) +++ php/php-src/trunk/ext/mbstring/config.w32 2010-03-15 14:19:51 UTC (rev 296242) @@ -7,7 +7,7 @@ if (PHP_MBSTRING != "no") { - FSO.CopyFile("ext\\mbstring\\libmbfl\\config.h.vc6", + FSO.CopyFile("ext\\mbstring\\libmbfl\\config.h.w32", "ext\\mbstring\\libmbfl\\config.h", true); FSO.CopyFile("ext\\mbstring\\oniguruma\\win32\\config.h", "ext\\mbstring\\oniguruma\\config.h", true); Added: php/php-src/trunk/ext/mbstring/libmbfl/config.h.w32 === --- php/php-src/trunk/ext/mbstring/libmbfl/config.h.w32 (rev 0) +++ php/php-src/trunk/ext/mbstring/libmbfl/config.h.w32 2010-03-15 14:19:51 UTC (rev 296242) @@ -0,0 +1,12 @@ +#define HAVE_STDIO_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDDEF_H 1 +#define HAVE_ASSERT_H 1 +#define HAVE_MEMORY_H 1 +/* #undef HAVE_STRINGS_H */ +#define HAVE_STRING_H 1 +/* #undef HAVE_STRCASECMP */ +#define HAVE_STRICMP 1 +#define HAVE_WIN32_NATIVE_THREAD 1 +#define USE_WIN32_NATIVE_THREAD 1 +#define ENABLE_THREADS 1 -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_2/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt branches/PHP_5_3/NEWS branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfilter.c branches/PHP_5_3/ext/
moriyoshiTue, 09 Nov 2010 03:23:04 + Revision: http://svn.php.net/viewvc?view=revision&revision=305214 Log: - Fix bug #53273 (mb_strcut() returns garbage with the excessive length parameter). Bug: http://bugs.php.net/53273 (Open) mb_strcut() returns garbage with the excessive length parameter Changed paths: A php/php-src/branches/PHP_5_2/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/ext/mbstring/libmbfl/mbfl/mbfilter.c A php/php-src/branches/PHP_5_3/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt U php/php-src/trunk/ext/mbstring/libmbfl/mbfl/mbfilter.c A php/php-src/trunk/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt Added: php/php-src/branches/PHP_5_2/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt === --- php/php-src/branches/PHP_5_2/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt (rev 0) +++ php/php-src/branches/PHP_5_2/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt 2010-11-09 03:23:04 UTC (rev 305214) @@ -0,0 +1,62 @@ +--TEST-- +mb_strcut() missing boundary check. +--SKIPIF-- + +--FILE-- + +--FILE-- +val + from; end = start + (length & -4); } else if ((encoding->flag & MBFL_ENCTYPE_SBCS)) { + if (from + length >= string->len) { + length = string->len - from; + } + start = string->val + from; end = start + length; } else if (encoding->mblen_table != NULL) { Added: php/php-src/branches/PHP_5_3/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt === --- php/php-src/branches/PHP_5_3/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt 2010-11-09 03:23:04 UTC (rev 305214) @@ -0,0 +1,31 @@ +--TEST-- +mb_strcut() missing boundary check. +--SKIPIF-- + +--FILE-- +val + from; end = start + (length & -4); } else if ((encoding->flag & MBFL_ENCTYPE_SBCS)) { + if (from + length >= string->len) { + length = string->len - from; + } + start = string->val + from; end = start + length; } else if (encoding->mblen_table != NULL) { Added: php/php-src/trunk/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt === --- php/php-src/trunk/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt (rev 0) +++ php/php-src/trunk/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt 2010-11-09 03:23:04 UTC (rev 305214) @@ -0,0 +1,31 @@ +--TEST-- +mb_strcut() missing boundary check. +--SKIPIF-- + +--FILE-- +-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/branches/PHP_5_2/ext/mbstring/tests/ mb_strcut_missing_boundary_check.phpt
moriyoshiTue, 09 Nov 2010 03:27:11 + Revision: http://svn.php.net/viewvc?view=revision&revision=305215 Log: - Remove duplicate portion. Changed paths: U php/php-src/branches/PHP_5_2/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt Modified: php/php-src/branches/PHP_5_2/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt === --- php/php-src/branches/PHP_5_2/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt 2010-11-09 03:23:04 UTC (rev 305214) +++ php/php-src/branches/PHP_5_2/ext/mbstring/tests/mb_strcut_missing_boundary_check.phpt 2010-11-09 03:27:11 UTC (rev 305215) @@ -29,34 +29,3 @@ string(12) "006100620063" string(6) "616263" string(6) "616263" ---TEST-- -mb_strcut() missing boundary check. ---SKIPIF-- - ---FILE-- --- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Tue Jan 7 17:53:42 2003 EDT Modified files: /php4/ext/standard filters.c Log: Instances should not be freed in dtor()... Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.7 php4/ext/standard/filters.c:1.8 --- php4/ext/standard/filters.c:1.7 Tue Jan 7 17:52:24 2003 +++ php4/ext/standard/filters.c Tue Jan 7 17:53:42 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.7 2003/01/07 22:52:24 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.8 2003/01/07 22:53:42 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -265,8 +265,7 @@ static void php_base64_filter_dtor(php_base64_filter *inst) { - assert(inst != NULL); - efree(inst); + /* do nothing */ } static size_t strfilter_base64_write(php_stream *stream, php_stream_filter *thisfilter, @@ -448,6 +447,9 @@ static void strfilter_base64_dtor(php_stream_filter *thisfilter TSRMLS_DC) { php_base64_filter_dtor((php_base64_filter *)thisfilter->abstract); + + assert(thisfilter->abstract != NULL); + efree(thisfilter->abstract); } static php_stream_filter_ops strfilter_base64_ops = { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Tue Jan 7 17:52:24 2003 EDT Modified files: /php4/ext/standard filters.c Log: Made error msg format more consistent Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.6 php4/ext/standard/filters.c:1.7 --- php4/ext/standard/filters.c:1.6 Mon Jan 6 20:41:18 2003 +++ php4/ext/standard/filters.c Tue Jan 7 17:52:24 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.6 2003/01/07 01:41:18 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.7 2003/01/07 22:52:24 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -375,7 +375,7 @@ if (!(i & 0xc0)) { if (ustat) { - php_error(E_WARNING, "stream filter(stream.base64): invalid base64 sequence"); + php_error(E_WARNING, "stream filter(%s): +invalid base64 sequence", thisfilter->fops->label); return 0; } if (6 <= pack_bcnt) { @@ -390,7 +390,7 @@ } } else if (ustat) { if (pack_bcnt == 8 || pack_bcnt == 2) { - php_error(E_WARNING, "stream filter(stream.base64): unexpected end of stream"); + php_error(E_WARNING, "stream filter(%s): +unexpected end of stream", thisfilter->fops->label); return 0; } } @@ -547,7 +547,7 @@ unsigned int nbl = (*ps >= 'A' ? *ps - 0x37 : *ps - 0x30); if (nbl > 15) { - php_error(E_WARNING, "stream filter(stream.quoted-printable): invalid character sequence"); + php_error(E_WARNING, "stream filter(%s): +invalid character sequence", thisfilter->fops->label); return 0; } v = (v << 4) | nbl; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Wed Jan 8 18:44:38 2003 EDT Modified files: /php4/ext/standard filters.c Log: Reimplemented base64 filter to use iconv()-like facility for flexibility. # I'm leaving the code dirty & ugly prior to the discussion. Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.8 php4/ext/standard/filters.c:1.9 --- php4/ext/standard/filters.c:1.8 Tue Jan 7 17:53:42 2003 +++ php4/ext/standard/filters.c Wed Jan 8 18:44:38 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.8 2003/01/07 22:53:42 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.9 2003/01/08 23:44:38 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -207,14 +207,38 @@ /* }}} */ /* {{{ base64 stream filter implementation */ -typedef struct _php_base64_filter -{ + +typedef enum _php_conv_err_t { + PHP_CONV_ERR_SUCCESS = SUCCESS, + PHP_CONV_ERR_UNKNOWN, + PHP_CONV_ERR_TOO_BIG, + PHP_CONV_ERR_INVALID_SEQ, + PHP_CONV_ERR_UNEXPECTED_EOS +} php_conv_err_t; + +typedef struct _php_conv php_conv; + +typedef php_conv_err_t (*php_conv_convert_func)(php_conv *, const char **, size_t *, +char **, size_t *); +typedef void (*php_conv_dtor_func)(php_conv *); + +struct _php_conv { + php_conv_convert_func convert_op; + php_conv_dtor_func dtor; +}; + +#define php_conv_convert(a, b, c, d, e) ((php_conv *)(a))->convert_op((php_conv +*)(a), (b), (c), (d), (e)) +#define php_conv_dtor(a) ((php_conv *)a)->dtor((a)) + +/* {{{ php_conv_base64_encode */ +typedef struct _php_conv_base64_encode { + php_conv _super; + unsigned char erem[3]; size_t erem_len; - unsigned int urem; - unsigned int urem_nbits; - unsigned int ustat; -} php_base64_filter; +} php_conv_base64_encode; + +static php_conv_err_t php_conv_base64_encode_convert(php_conv_base64_encode *inst, +const char **in_p, size_t *in_left, char **out_p, size_t *out_left); +static void php_conv_base64_encode_dtor(php_conv_base64_encode *inst); static unsigned char b64_tbl_enc[256] = { 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', @@ -235,147 +259,252 @@ 'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' }; -static unsigned int b64_tbl_unenc[256] = { - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64,128, 64, 64, - 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, - 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 -}; - - -static int php_base64_filter_ctor(php_base64_filter *inst) +static php_conv_err_t php_conv_base64_encode_ctor(php_conv_base64_encode *inst) { + inst->_super.convert_op = (php_conv_convert_func) +php_conv_base64_encode_convert; + inst->_super.dtor = (php_conv_dtor_func) php_conv_base64_encode_dtor; inst->erem_len = 0; - inst->urem_nbits = 0; - inst->ustat = 0; return SUCCESS; } -static void php_base64_filter_dtor(php_base64_filter *inst) +static void php_conv_base64_encode_dtor(php_conv_base64_encode *inst) { /* do nothing */ } -static size_t strfilter_base64_write(php_stream *stream, php_stream_filter *thisfilter, - const char *buf, size_t count TSRMLS_DC) +static php_conv_err_t php_conv_base64_encode_convert(php_conv_base64_encode *inst, +const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p) { - register size_t chunk_left, bcnt; + register size_t ocnt, icnt; register unsigned char *ps, *pd; size_t nbytes_written; - char chunk[1024]; - php_base64_filter *inst = (php_base64_filter *)thisfilter->abstract; - bcnt = count; - ps = (unsigned char *)buf; - pd = chunk; - chunk_left = sizeof(chunk); + pd = (unsigned char *)(*out_pp); + ocnt = *out_left_p; nbytes_written = 0; - - /* consume the remainder first */ - switch (inst->erem_len) { -
[PHP-CVS] cvs: php4 /ext/ctype ctype.c
moriyoshi Thu Jan 9 15:23:36 2003 EDT Modified files: /php4/ext/ctype ctype.c Log: Fixed typo Index: php4/ext/ctype/ctype.c diff -u php4/ext/ctype/ctype.c:1.25 php4/ext/ctype/ctype.c:1.26 --- php4/ext/ctype/ctype.c:1.25 Tue Dec 31 11:06:20 2002 +++ php4/ext/ctype/ctype.c Thu Jan 9 15:23:36 2003 @@ -59,7 +59,7 @@ }; /* }}} */ -/* {{{ ctype_mpodule_entry +/* {{{ ctype_module_entry */ zend_module_entry ctype_module_entry = { STANDARD_MODULE_HEADER, -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/iconv iconv.c
moriyoshi Thu Jan 9 23:32:25 2003 EDT Modified files: /php4/ext/iconv iconv.c Log: Added missing cast operators Index: php4/ext/iconv/iconv.c diff -u php4/ext/iconv/iconv.c:1.80 php4/ext/iconv/iconv.c:1.81 --- php4/ext/iconv/iconv.c:1.80 Mon Jan 6 10:47:24 2003 +++ php4/ext/iconv/iconv.c Thu Jan 9 23:32:25 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: iconv.c,v 1.80 2003/01/06 15:47:24 moriyoshi Exp $ */ +/* $Id: iconv.c,v 1.81 2003/01/10 04:32:25 moriyoshi Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -641,7 +641,7 @@ } } - if (cnt >= offset) { + if (cnt >= (unsigned int)offset) { if (cd2 == NULL) { cd2 = icv_open(enc, GENERIC_SUPERSET_NAME); @@ -790,7 +790,7 @@ } } if (offset >= 0) { - if (cnt >= offset) { + if (cnt >= (unsigned int)offset) { if (_php_iconv_memequal(buf, ndl_buf_p, sizeof(buf))) { if (match_ofs == (unsigned int)-1) { match_ofs = cnt; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/mime_magic mime_magic.c
moriyoshi Thu Jan 9 23:37:26 2003 EDT Modified files: /php4/ext/mime_magicmime_magic.c Log: Reduced compiler warnings Index: php4/ext/mime_magic/mime_magic.c diff -u php4/ext/mime_magic/mime_magic.c:1.22 php4/ext/mime_magic/mime_magic.c:1.23 --- php4/ext/mime_magic/mime_magic.c:1.22 Tue Dec 31 11:06:57 2002 +++ php4/ext/mime_magic/mime_magic.cThu Jan 9 23:37:26 2003 @@ -15,7 +15,7 @@ | Author: Hartmut Holzgraefe <[EMAIL PROTECTED]> | +--+ - $Id: mime_magic.c,v 1.22 2002/12/31 16:06:57 sebastian Exp $ + $Id: mime_magic.c,v 1.23 2003/01/10 04:37:26 moriyoshi Exp $ This module contains a lot of stuff taken from Apache mod_mime_magic, so the license section is a little bit longer than usual: @@ -1425,7 +1425,7 @@ { long offset = m->offset; -if (offset + sizeof(union VALUETYPE) > nbytes) +if (offset + (long)sizeof(union VALUETYPE) > nbytes) return 0; memcpy(p, s + offset, sizeof(union VALUETYPE)); @@ -1447,7 +1447,7 @@ break; } - if (offset + sizeof(union VALUETYPE) > nbytes) + if (offset + (long)sizeof(union VALUETYPE) > nbytes) return 0; memcpy(p, s + offset, sizeof(union VALUETYPE)); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard reg.c
moriyoshi Thu Jan 9 23:44:22 2003 EDT Modified files: /php4/ext/standard reg.c Log: Reduced compiler warnings Index: php4/ext/standard/reg.c diff -u php4/ext/standard/reg.c:1.69 php4/ext/standard/reg.c:1.70 --- php4/ext/standard/reg.c:1.69Tue Dec 31 11:07:54 2002 +++ php4/ext/standard/reg.c Thu Jan 9 23:44:21 2003 @@ -17,7 +17,7 @@ | Jaakko Hyvätti <[EMAIL PROTECTED]> | +--+ */ -/* $Id: reg.c,v 1.69 2002/12/31 16:07:54 sebastian Exp $ */ +/* $Id: reg.c,v 1.70 2003/01/10 04:44:21 moriyoshi Exp $ */ #include #include @@ -347,7 +347,7 @@ walkbuf = &buf[tmp + subs[0].rm_so]; walk = replace; while (*walk) - if ('\\' == *walk && isdigit(walk[1]) && walk[1] - '0' <= re.re_nsub) { + if ('\\' == *walk && isdigit(walk[1]) && walk[1] - '0' +<= (int)re.re_nsub) { if (subs[walk[1] - '0'].rm_so > -1 && subs[walk[1] - '0'].rm_eo > -1 /* this next case shouldn't happen. it does. */ && subs[walk[1] - '0'].rm_so <= subs[walk[1] - '0'].rm_eo) { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /sapi/apache2filter php_functions.c
moriyoshi Sat Jan 11 17:36:38 2003 EDT Modified files: /php4/sapi/apache2filterphp_functions.c Log: This patch is likely to fix win32 build Index: php4/sapi/apache2filter/php_functions.c diff -u php4/sapi/apache2filter/php_functions.c:1.34 php4/sapi/apache2filter/php_functions.c:1.35 --- php4/sapi/apache2filter/php_functions.c:1.34Tue Dec 31 10:59:03 2002 +++ php4/sapi/apache2filter/php_functions.c Sat Jan 11 17:36:38 2003 @@ -16,13 +16,14 @@ +--+ */ -/* $Id: php_functions.c,v 1.34 2002/12/31 15:59:03 sebastian Exp $ */ +/* $Id: php_functions.c,v 1.35 2003/01/11 22:36:38 moriyoshi Exp $ */ #include "php.h" #include "ext/standard/php_smart_str.h" #include "ext/standard/info.h" #include "SAPI.h" +#define CORE_PRIVATE #include "apr_strings.h" #include "apr_time.h" #include "ap_config.h" -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard browscap.c datetime.c pack.c reg.c string.c
moriyoshi Sat Jan 11 17:32:19 2003 EDT Modified files: /php4/ext/standard browscap.c datetime.c pack.c reg.c string.c Log: Reduced warnings in ZE2 build Index: php4/ext/standard/browscap.c diff -u php4/ext/standard/browscap.c:1.65 php4/ext/standard/browscap.c:1.66 --- php4/ext/standard/browscap.c:1.65 Mon Jan 6 16:43:28 2003 +++ php4/ext/standard/browscap.cSat Jan 11 17:32:19 2003 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: browscap.c,v 1.65 2003/01/06 21:43:28 iliaa Exp $ */ +/* $Id: browscap.c,v 1.66 2003/01/11 22:32:19 moriyoshi Exp $ */ #include "php.h" #include "php_regex.h" @@ -49,20 +49,20 @@ register int i, j; char *t; - for (i=0; i | +--+ */ -/* $Id: pack.c,v 1.43 2002/12/31 16:07:49 sebastian Exp $ */ +/* $Id: pack.c,v 1.44 2003/01/11 22:32:19 moriyoshi Exp $ */ #include "php.h" @@ -320,7 +320,7 @@ val = argv[currentarg++]; convert_to_string_ex(val); memcpy(&output[outputpos], Z_STRVAL_PP(val), - (Z_STRLEN_PP(val) < arg) ? Z_STRLEN_PP(val) : arg); + ((int)Z_STRLEN_PP(val) < arg) ? +Z_STRLEN_PP(val) : arg); outputpos += arg; break; @@ -334,7 +334,7 @@ convert_to_string_ex(val); v = Z_STRVAL_PP(val); outputpos--; - if(arg > Z_STRLEN_PP(val)) { + if(arg > (int)Z_STRLEN_PP(val)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Type %c: not enough characters in string", code); arg = Z_STRLEN_PP(val); } Index: php4/ext/standard/reg.c diff -u php4/ext/standard/reg.c:1.70 php4/ext/standard/reg.c:1.71 --- php4/ext/standard/reg.c:1.70Thu Jan 9 23:44:21 2003 +++ php4/ext/standard/reg.c Sat Jan 11 17:32:19 2003 @@ -17,7 +17,7 @@ | Jaakko Hyvätti <[EMAIL PROTECTED]> | +--+ */ -/* $Id: reg.c,v 1.70 2003/01/10 04:44:21 moriyoshi Exp $ */ +/* $Id: reg.c,v 1.71 2003/01/11 22:32:19 moriyoshi Exp $ */ #include #include @@ -605,7 +605,7 @@ tmp = emalloc((Z_STRLEN_PP(string) * 4) + 1); - for (i = j = 0; i < Z_STRLEN_PP(string); i++) { + for (i = j = 0; i < (int)Z_STRLEN_PP(string); i++) { c = (unsigned char) Z_STRVAL_PP(string)[i]; if(isalpha(c)) { tmp[j++] = '['; Index: php4/ext/standard/string.c diff -u php4/ext/standard/string.c:1.344 php4/ext/standard/string.c:1.345 --- php4/ext/standard/string.c:1.344Sat Jan 11 12:52:38 2003 +++ php4/ext/standard/string.c Sat Jan 11 17:32:19 2003 @@ -18,7 +18,7 @@ +--+ */ -/* $Id: string.c,v 1.344 2003/01/11 17:52:38 iliaa Exp $ */ +/* $Id: string.c,v 1.345 2003/01/11 22:32:19 moriyoshi Exp $ */ /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */ @@ -1557,7 +1557,7 @@ if (argc == 3) { convert_to_long_ex(offset); - if (Z_LVAL_PP(offset) < 0 || Z_LVAL_PP(offset) > Z_STRLEN_PP(haystack)) { + if (Z_LVAL_PP(offset) < 0 || Z_LVAL_PP(offset) > +(int)Z_STRLEN_PP(haystack)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset not contained in string."); RETURN_FALSE; } @@ -1597,7 +1597,7 @@ if (argc == 3) { convert_to_long_ex(offset); - if (Z_LVAL_PP(offset) < 0 || Z_LVAL_PP(offset) > Z_STRLEN_PP(haystack)) { + if (Z_LVAL_PP(offset) < 0 || Z_LVAL_PP(offset) > +(int)Z_STRLEN_PP(haystack)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Offset not contained in string."); RETURN_FALSE; } @@ -1786,11 +1786,11 @@ } } - if (f >= Z_STRLEN_PP(str)) { + if (f >= (int)Z_STRLEN_PP(str)) { RETURN_FALSE; } - if ((f + l) > Z_STRLEN_PP(str)) { + if ((f + l) > (int)Z_STRLEN_PP(str)) { l = Z_STRLEN_PP(str) - f; } @@ -1833,11 +1833,11 @@ * of the string */ if (f < 0) { - f = Z_STRLEN_PP(str) + f; + f = (int)Z_STRLEN_PP(str) + f; if (f < 0) { f = 0; } - } else if (f > Z_STRLEN_PP(str)) { +
[PHP-CVS] cvs: php4 /ext/standard browscap.c datetime.c file.c formatted_print.c pack.c reg.c string.c
moriyoshi Sat Jan 11 18:05:20 2003 EDT Modified files: /php4/ext/standard browscap.c datetime.c file.c formatted_print.c pack.c reg.c string.c Log: Reverted because correct decision has not been made yet. Index: php4/ext/standard/browscap.c diff -u php4/ext/standard/browscap.c:1.66 php4/ext/standard/browscap.c:1.67 --- php4/ext/standard/browscap.c:1.66 Sat Jan 11 17:32:19 2003 +++ php4/ext/standard/browscap.cSat Jan 11 18:05:19 2003 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: browscap.c,v 1.66 2003/01/11 22:32:19 moriyoshi Exp $ */ +/* $Id: browscap.c,v 1.67 2003/01/11 23:05:19 moriyoshi Exp $ */ #include "php.h" #include "php_regex.h" @@ -49,20 +49,20 @@ register int i, j; char *t; - for (i = 0; i < (int)Z_STRLEN_P(pattern); i++) { + for (i=0; i 1 && (int)Z_STRLEN_P(return_value) < len / 2) { + if (argc > 1 && Z_STRLEN_P(return_value) < len / 2) { Z_STRVAL_P(return_value) = erealloc(buf, line_len + 1); } } @@ -1559,7 +1559,7 @@ } convert_to_string_ex(arg2); convert_to_long_ex(arg3); - num_bytes = MIN(Z_LVAL_PP(arg3), (int)Z_STRLEN_PP(arg2)); + num_bytes = MIN(Z_LVAL_PP(arg3), Z_STRLEN_PP(arg2)); break; default: WRONG_PARAM_COUNT; Index: php4/ext/standard/formatted_print.c diff -u php4/ext/standard/formatted_print.c:1.62 php4/ext/standard/formatted_print.c:1.63 --- php4/ext/standard/formatted_print.c:1.62Sat Jan 11 17:17:37 2003 +++ php4/ext/standard/formatted_print.c Sat Jan 11 18:05:19 2003 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: formatted_print.c,v 1.62 2003/01/11 22:17:37 moriyoshi Exp $ */ +/* $Id: formatted_print.c,v 1.63 2003/01/11 23:05:19 moriyoshi Exp $ */ #include /* modf() */ #include "php.h" @@ -504,7 +504,7 @@ currarg = 1; - while (inpos < (int)Z_STRLEN_PP(args[format_offset])) { + while (inpos | +--+ */ -/* $Id: pack.c,v 1.44 2003/01/11 22:32:19 moriyoshi Exp $ */ +/* $Id: pack.c,v 1.45 2003/01/11 23:05:19 moriyoshi Exp $ */ #include "php.h" @@ -320,7 +320,7 @@ val = argv[currentarg++]; convert_to_string_ex(val); memcpy(&output[outputpos], Z_STRVAL_PP(val), - ((int)Z_STRLEN_PP(val) < arg) ? Z_STRLEN_PP(val) : arg); + (Z_STRLEN_PP(val) < arg) ? Z_STRLEN_PP(val) +: arg); outputpos += arg; break; @@ -334,7 +334,7 @@ convert_to_string_ex(val); v = Z_STRVAL_PP(val); outputpos--; - if(arg > (int)Z_STRLEN_PP(val)) { + if(arg > Z_STRLEN_PP(val)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Type %c: not enough characters in string", code); arg = Z_STRLEN_PP(val); } Index: php4/ext/standard/reg.c diff -u php4/ext/standard/reg.c:1.71 php4/ext/standard/reg.c:1.72 --- php4/ext/standard/reg.c:1.71Sat Jan 11 17:32:19 2003 +++ php4/ext/standard/reg.c Sat Jan 11 18:05:19 2003 @@ -17,7 +17,7 @@ | Jaakko Hyvätti <[EMAIL PROTECTED]> | +--+ */ -/* $Id: reg.c,v 1.71 2003/01/11 22:32:19 moriyoshi Exp $ */ +/* $Id: reg.c,v 1.72 2003/01/11 23:05:19 moriyoshi Exp $ */ #include #include @@ -605,7 +605,7 @@ tmp = emalloc((Z_STRLEN_PP(string) * 4) + 1); - for (i = j = 0; i < (int)Z_STRLEN_PP(string); i++) { + for (i = j = 0; i < Z_STRLEN_PP(string); i++) { c = (unsigned char) Z_STRVAL_PP(string)[i]; if(isalpha(c)) { tmp[j++] = '['; Index: php4/ext/standard/string.c diff -u php4/ext/standard/string.c:1.345 php4/ext/standard/string.c:1.346 --- php4/ext/standard/string.c:1.345Sat Jan 11 17:32:19 2003 +++ php4/ext/standard/string.c Sat Jan 11 18:05:19 2003 @@ -18,7 +18,7 @@ +--+ */ -/* $Id: string.c,v 1.345 2003/01/11 22:32:19 moriyoshi Exp $ */ +/* $Id: string.c,v 1.346 2003/01/11 23:05:19 moriyoshi Exp $ */ /* Synced with php 3.0 revision 1.193 1999-06-16 [ssb] */ @@ -1557,7 +1557,7 @@ if (argc == 3) {
Re: [PHP-CVS] cvs: php4 /ext/standard browscap.c datetime.c pack.c reg.c string.c
> > Modified files: > > /php4/ext/standard browscap.c datetime.c pack.c reg.c string.c > > Log: > > Reduced warnings in ZE2 build > > Isn't there another way for this, as this makes the code quire ugly? These changes had been reverted prior to the discussion about the change of len field in ZE2 zvalue_value, and it seems we have concluded to restore the structure as it was in ZE1. Moriyoshi -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Sun Jan 12 07:48:13 2003 EDT Modified files: /php4/ext/standard filters.c Log: . Updated quoted-printable filter by a neater implementation. . Changed emalloc family functions to pemalloc ones for persistent filters. . Changed base64 and quoted-printable filter names to "convert.base64-encode", "convert.base64-decode", "convert.quoted-printable-encode", and "convert.quoted-printable-decode" respectively for the consistency that may be requested later. Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.9 php4/ext/standard/filters.c:1.10 --- php4/ext/standard/filters.c:1.9 Wed Jan 8 18:44:38 2003 +++ php4/ext/standard/filters.c Sun Jan 12 07:48:13 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.9 2003/01/08 23:44:38 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.10 2003/01/12 12:48:13 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -206,7 +206,7 @@ }; /* }}} */ -/* {{{ base64 stream filter implementation */ +/* {{{ base64 / quoted_printable stream filter implementation */ typedef enum _php_conv_err_t { PHP_CONV_ERR_SUCCESS = SUCCESS, @@ -552,69 +552,258 @@ } /* }}} */ -typedef struct _php_base64_filter { +/* {{{ php_conv_qprint_encode */ +typedef struct _php_conv_qprint_encode { + php_conv _super; +} php_conv_qprint_encode; + +static void php_conv_qprint_encode_dtor(php_conv_qprint_encode *inst); +static php_conv_err_t php_conv_qprint_encode_convert(php_conv_qprint_encode *inst, +const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p); + +static void php_conv_qprint_encode_dtor(php_conv_qprint_encode *inst) +{ + /* do nothing */ +} + +static php_conv_err_t php_conv_qprint_encode_convert(php_conv_qprint_encode *inst, +const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p) +{ + php_conv_err_t err = PHP_CONV_ERR_SUCCESS; + unsigned char *ps, *pd; + size_t icnt, ocnt; + unsigned int c; + static char qp_digits[] = "0123456789ABCDEF"; + + if (in_pp == NULL || in_left_p == NULL) { + return PHP_CONV_ERR_SUCCESS; + } + + ps = (unsigned char *)(*in_pp); + icnt = *in_left_p; + pd = (unsigned char *)(*out_pp); + ocnt = *out_left_p; + + for (; icnt > 0; icnt--, ps++) { + c = *ps; + + if ((c >= 33 && c <= 60) || (c >= 62 && c <= 126)) { + if (ocnt < 1) { + err = PHP_CONV_ERR_TOO_BIG; + break; + } + *(pd++) = c; + ocnt--; + } else { + if (ocnt < 3) { + err = PHP_CONV_ERR_TOO_BIG; + break; + } + *(pd++) = '='; + *(pd++) = qp_digits[(c >> 4)]; + *(pd++) = qp_digits[(c & 0x0f)]; + ocnt -= 3; + } + } + + *in_pp = (const char *)ps; + *in_left_p = icnt; + *out_pp = (char *)pd; + *out_left_p = ocnt; + + return err; +} + +static php_conv_err_t php_conv_qprint_encode_ctor(php_conv_qprint_encode *inst) +{ + inst->_super.convert_op = (php_conv_convert_func) +php_conv_qprint_encode_convert; + inst->_super.dtor = (php_conv_dtor_func) php_conv_qprint_encode_dtor; + return PHP_CONV_ERR_SUCCESS; +} +/* }}} */ + +/* {{{ php_conv_qprint_decode */ +typedef struct _php_conv_qprint_decode { + php_conv _super; + + int scan_stat; + unsigned int next_char; +} php_conv_qprint_decode; + +static void php_conv_qprint_decode_dtor(php_conv_qprint_decode *inst) +{ + /* do nothing */ +} + +static php_conv_err_t php_conv_qprint_decode_convert(php_conv_qprint_decode *inst, +const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p) +{ + php_conv_err_t err = PHP_CONV_ERR_SUCCESS; + size_t icnt, ocnt; + unsigned char *ps, *pd; + unsigned int scan_stat; + unsigned int v; + + if (in_pp == NULL || in_left_p == NULL) { + if (inst->scan_stat != 0) { + return PHP_CONV_ERR_UNEXPECTED_EOS; + } + return PHP_CONV_ERR_SUCCESS; + } + + ps = (unsigned char *)(*in_pp); + icnt = *in_left_p; + pd = (unsigned char *)(*out_pp); + ocnt = *out_left_p; + scan_stat = inst->scan_stat; + + v = 0; + + for (;icnt > 0; icnt--) { + switch (scan_stat) { + case 0: { + if (*ps == '=') { + scan_stat = 1; + } else { + if (ocnt < 1) { +
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Sun Jan 12 08:41:35 2003 EDT Modified files: /php4/ext/standard filters.c Log: Fixed error msg format so it correctly reports the actual filter name Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.10 php4/ext/standard/filters.c:1.11 --- php4/ext/standard/filters.c:1.10Sun Jan 12 07:48:13 2003 +++ php4/ext/standard/filters.c Sun Jan 12 08:41:35 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.10 2003/01/12 12:48:13 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.11 2003/01/12 13:41:35 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -869,15 +869,15 @@ break; case PHP_CONV_ERR_UNKNOWN: - php_error(E_WARNING, "stream filter(%s): unknown error", thisfilter->fops->label, err); + php_error(E_WARNING, "stream filter (%s): +unknown error", inst->filtername, err); return 0; case PHP_CONV_ERR_INVALID_SEQ: - php_error(E_WARNING, "stream filter(%s): invalid base64 sequence", thisfilter->fops->label, err); + php_error(E_WARNING, "stream filter (%s): +invalid base64 sequence", inst->filtername, err); return 0; case PHP_CONV_ERR_UNEXPECTED_EOS: - php_error(E_WARNING, "stream filter(%s): unexpected end of stream", thisfilter->fops->label, err); + php_error(E_WARNING, "stream filter (%s): +unexpected end of stream", inst->filtername, err); return 0; default: @@ -923,15 +923,15 @@ switch (err) { case PHP_CONV_ERR_UNKNOWN: - php_error(E_WARNING, "stream filter(%s): unknown error", thisfilter->fops->label, err); + php_error(E_WARNING, "stream filter (%s): +unknown error", inst->filtername, err); return 0; case PHP_CONV_ERR_INVALID_SEQ: - php_error(E_WARNING, "stream filter(%s): invalid base64 sequence", thisfilter->fops->label, err); + php_error(E_WARNING, "stream filter (%s): +invalid base64 sequence", inst->filtername, err); return 0; case PHP_CONV_ERR_UNEXPECTED_EOS: - php_error(E_WARNING, "stream filter(%s): unexpected end of stream", thisfilter->fops->label, err); + php_error(E_WARNING, "stream filter (%s): +unexpected end of stream", inst->filtername, err); return 0; default: @@ -968,7 +968,7 @@ out_p = bucket_buf; out_left = sizeof(bucket_buf); } else { - php_error(E_WARNING, "stream filter(%s): unknown error", thisfilter->fops->label); + php_error(E_WARNING, "stream filter (%s): +unknown error", inst->filtername); return 0; } } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Sun Jan 12 08:46:11 2003 EDT Modified files: /php4/ext/standard filters.c Log: Fixed infinite loop bug when an invalid quoted-printable escape sequence appears in the streem. Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.11 php4/ext/standard/filters.c:1.12 --- php4/ext/standard/filters.c:1.11Sun Jan 12 08:41:35 2003 +++ php4/ext/standard/filters.c Sun Jan 12 08:46:11 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.11 2003/01/12 13:41:35 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.12 2003/01/12 13:46:11 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -675,7 +675,8 @@ unsigned int nbl = (*ps >= 'A' ? *ps - 0x37 : *ps - 0x30); if (nbl > 15) { - return 0; + err = PHP_CONV_ERR_INVALID_SEQ; + goto out; } v = (v << 4) | nbl; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Sun Jan 12 16:05:23 2003 EDT Modified files: /php4/ext/standard filters.c Log: Fixed a bug of the base64 decoder that a sequence of intervening characters that are supposed to be ignored by the decoder cause output corruption. Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.12 php4/ext/standard/filters.c:1.13 --- php4/ext/standard/filters.c:1.12Sun Jan 12 08:46:11 2003 +++ php4/ext/standard/filters.c Sun Jan 12 16:05:22 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.12 2003/01/12 13:46:11 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.13 2003/01/12 21:05:22 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -526,9 +526,6 @@ } if ((pack_bcnt | ustat) == 0) { if (ocnt < 1) { - urem |= (pack << urem_nbits); - urem_nbits += 8; - err = PHP_CONV_ERR_TOO_BIG; break; } @@ -537,6 +534,14 @@ pack = 0; pack_bcnt = nbitsof_pack; } + } + + if (urem_nbits >= pack_bcnt) { + urem |= (pack << (urem_nbits - pack_bcnt)); + urem_nbits += (nbitsof_pack - pack_bcnt); + } else { + urem |= (pack >> (pack_bcnt - urem_nbits)); + urem_nbits += (nbitsof_pack - pack_bcnt); } inst->urem = urem; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /tests/lang bug21600.phpt
moriyoshi Sun Jan 12 18:56:04 2003 EDT Added files: /php4/tests/langbug21600.phpt Log: Added test case for bug #21600 Index: php4/tests/lang/bug21600.phpt +++ php4/tests/lang/bug21600.phpt --TEST-- Bug #21600 (assign by reference function call changes variable contents) --FILE-- --EXPECT-- array(1) { ["foo"]=> string(4) "test" } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4(PHP_4_3) /tests/lang bug21600.phpt
moriyoshi Sun Jan 12 18:57:20 2003 EDT Added files: (Branch: PHP_4_3) /php4/tests/langbug21600.phpt Log: MFH Index: php4/tests/lang/bug21600.phpt +++ php4/tests/lang/bug21600.phpt --TEST-- Bug #21600 (assign by reference function call changes variable contents) --FILE-- --EXPECT-- array(1) { ["foo"]=> string(4) "test" } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Mon Jan 13 05:21:41 2003 EDT Modified files: /php4/ext/standard filters.c Log: . Implemented a common filter parameter parsing function. # For example "base64-encode.line-break-chars=--,base64-decode.blah=foobar" # will be parsed and splitted into a zval array as # array(2) { # ["base64-encode"]=> # array(1) { # ["line-break-chars"]=> # string(2) "--" # } # ["base64-decode"]=> # array(1) { # ["blah"] => # string(6) "foobar" # } # } . Added automatic line-breaking feature for base64 encode filter. This can be turned on by putting a option entry "base64-encode.line-length" to the filter parameters. Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.13 php4/ext/standard/filters.c:1.14 --- php4/ext/standard/filters.c:1.13Sun Jan 12 16:05:22 2003 +++ php4/ext/standard/filters.c Mon Jan 13 05:21:40 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.13 2003/01/12 21:05:22 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.14 2003/01/13 10:21:40 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -213,7 +213,9 @@ PHP_CONV_ERR_UNKNOWN, PHP_CONV_ERR_TOO_BIG, PHP_CONV_ERR_INVALID_SEQ, - PHP_CONV_ERR_UNEXPECTED_EOS + PHP_CONV_ERR_UNEXPECTED_EOS, + PHP_CONV_ERR_EXISTS, + PHP_CONV_ERR_NOT_FOUND } php_conv_err_t; typedef struct _php_conv php_conv; @@ -235,6 +237,12 @@ unsigned char erem[3]; size_t erem_len; + unsigned int line_ccnt; + unsigned int line_len; + const char *lbchars; + int lbchars_dup; + size_t lbchars_len; + int persistent; } php_conv_base64_encode; static php_conv_err_t php_conv_base64_encode_convert(php_conv_base64_encode *inst, const char **in_p, size_t *in_left, char **out_p, size_t *out_left); @@ -259,134 +267,219 @@ 'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' }; -static php_conv_err_t php_conv_base64_encode_ctor(php_conv_base64_encode *inst) +static php_conv_err_t php_conv_base64_encode_ctor(php_conv_base64_encode *inst, +unsigned int line_len, const char *lbchars, size_t lbchars_len, int lbchars_dup, int +persistent) { inst->_super.convert_op = (php_conv_convert_func) php_conv_base64_encode_convert; inst->_super.dtor = (php_conv_dtor_func) php_conv_base64_encode_dtor; inst->erem_len = 0; + inst->line_ccnt = line_len; + inst->line_len = line_len; + if (lbchars != NULL) { + inst->lbchars = (lbchars_dup ? pestrdup(lbchars, persistent) : +lbchars); + inst->lbchars_len = lbchars_len; + } else { + inst->lbchars = NULL; + } + inst->lbchars_dup = lbchars_dup; + inst->persistent = persistent; return SUCCESS; } static void php_conv_base64_encode_dtor(php_conv_base64_encode *inst) { - /* do nothing */ + assert(inst != NULL); + if (inst->lbchars_dup && inst->lbchars != NULL) { + pefree((void *)inst->lbchars, inst->persistent); + } } -static php_conv_err_t php_conv_base64_encode_convert(php_conv_base64_encode *inst, const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p) +static php_conv_err_t php_conv_base64_encode_flush(php_conv_base64_encode *inst, +const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p) { - register size_t ocnt, icnt; - register unsigned char *ps, *pd; - size_t nbytes_written; + volatile php_conv_err_t err = PHP_CONV_ERR_SUCCESS; + register unsigned char *pd; + register size_t ocnt; + unsigned int line_ccnt; pd = (unsigned char *)(*out_pp); ocnt = *out_left_p; - nbytes_written = 0; + line_ccnt = inst->line_ccnt; - if (in_pp != NULL && in_left_p != NULL) { - ps = (unsigned char *)(*in_pp); - icnt = *in_left_p; - - /* consume the remainder first */ - switch (inst->erem_len) { - case 1: - if (icnt >= 2) { - if (ocnt < 4) { - return PHP_CONV_ERR_TOO_BIG; - } - *(pd++) = b64_tbl_enc[(inst->erem[0] >> 2)]; - *(pd++) = b64_tbl_enc[(unsigned char)(inst->erem[0] << 4) | (ps[0] >> 4)]; - *(pd++) = b64_tbl_enc[(unsigned char)(ps[0] << 2) | (ps[1] >> 6)]; - *(pd++) = b64_tbl_enc[ps[1]]; - ocnt -= 4; - ps += 2; - icnt -= 2; -
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Mon Jan 13 06:00:24 2003 EDT Modified files: /php4/ext/standard filters.c Log: Fixed a silly segfault bug caused by lack of strict type checking Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.14 php4/ext/standard/filters.c:1.15 --- php4/ext/standard/filters.c:1.14Mon Jan 13 05:21:40 2003 +++ php4/ext/standard/filters.c Mon Jan 13 06:00:22 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.14 2003/01/13 10:21:40 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.15 2003/01/13 11:00:22 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -1358,7 +1358,7 @@ memcpy(buf, node_name, node_name_len); buf[node_name_len] = '\0'; - if (zend_hash_find(Z_ARRVAL_P(node), buf, node_name_len + 1, (void **)&z_tmp) != SUCCESS) { + if (zend_hash_find(Z_ARRVAL_P(node), +buf, node_name_len + 1, (void **)&z_tmp) != SUCCESS || Z_TYPE_PP(z_tmp) != IS_ARRAY) { zval *new_node; MAKE_STD_ZVAL(new_node); @@ -1456,10 +1456,14 @@ write_conv_opts = read_conv_opts = NULL; if (strcasecmp(dot, "base64-encode") == 0) { - if (options != NULL && zend_hash_find(Z_ARRVAL_P(options), "base64-encode", sizeof("base64-encode"), (void **)&tmp_zval_pp) == SUCCESS) { + if (options != NULL && + zend_hash_find(Z_ARRVAL_P(options), "base64-encode", +sizeof("base64-encode"), (void **)&tmp_zval_pp) == SUCCESS && + Z_TYPE_PP(tmp_zval_pp) == IS_ARRAY) { write_conv_opts = Z_ARRVAL_PP(tmp_zval_pp); } - if (options != NULL && zend_hash_find(Z_ARRVAL_P(options), "base64-decode", sizeof("base64-decode"), (void **)&tmp_zval_pp) == SUCCESS) { + if (options != NULL && + zend_hash_find(Z_ARRVAL_P(options), "base64-decode", +sizeof("base64-decode"), (void **)&tmp_zval_pp) == SUCCESS && + Z_TYPE_PP(tmp_zval_pp) == IS_ARRAY) { read_conv_opts = Z_ARRVAL_PP(tmp_zval_pp); } if (php_convert_filter_ctor(inst, @@ -1470,10 +1474,14 @@ } retval = php_stream_filter_alloc(&strfilter_convert_ops, inst, persistent); } else if (strcasecmp(dot, "base64-decode") == 0) { - if (options != NULL && zend_hash_find(Z_ARRVAL_P(options), "base64-decode", sizeof("base64-decode"), (void **)&tmp_zval_pp) == SUCCESS) { + if (options != NULL && + zend_hash_find(Z_ARRVAL_P(options), "base64-decode", +sizeof("base64-decode"), (void **)&tmp_zval_pp) == SUCCESS && + Z_TYPE_PP(tmp_zval_pp) == IS_ARRAY) { write_conv_opts = Z_ARRVAL_PP(tmp_zval_pp); } - if (options != NULL && zend_hash_find(Z_ARRVAL_P(options), "base64-encode", sizeof("base64-encode"), (void **)&tmp_zval_pp) == SUCCESS) { + if (options != NULL && + zend_hash_find(Z_ARRVAL_P(options), "base64-encode", +sizeof("base64-encode"), (void **)&tmp_zval_pp) == SUCCESS && + Z_TYPE_PP(tmp_zval_pp) == IS_ARRAY) { read_conv_opts = Z_ARRVAL_PP(tmp_zval_pp); } if (php_convert_filter_ctor(inst, @@ -1484,7 +1492,9 @@ } retval = php_stream_filter_alloc(&strfilter_convert_ops, inst, persistent); } else if (strcasecmp(dot, "quoted-printable-encode") == 0) { - if (options != NULL && zend_hash_find(Z_ARRVAL_P(options), "quoted-printable-encode", sizeof("quoted-printable-encode"), (void **)&tmp_zval_pp) == SUCCESS) { + if (options != NULL && + zend_hash_find(Z_ARRVAL_P(options), "quoted-printable-encode", +sizeof("quoted-printable-encode"), (void **)&tmp_zval_pp) == SUCCESS && + Z_TYPE_PP(tmp_zval_pp) == IS_ARRAY) { write_conv_opts = Z_ARRVAL_PP(tmp_zval_pp); } if (options != NULL && zend_hash_find(Z_ARRVAL_P(options), "quoted-printable-decode", sizeof("quoted-printable-decode"), (void **)&tmp_zval_pp) == SUCCESS) { @@ -1498,10 +1508,14 @@ } retval = php_stream_filter_alloc(&strfilter_convert_ops, inst, persistent); } else if (strcasecmp(dot, "quoted-printable-decode") == 0) { - if (options != NULL && zend_hash_find(Z_ARRVAL_P(options), "
Re: [PHP-CVS] cvs: php4 /ext/standard filters.c
On Mon, Jan 13, 2003 at 01:28:27PM +, Wez Furlong wrote: > I am going to alter the API so that you can pass a zval directly to the > filter implementation; this will make the code so much simpler. > > I mentioned this last week, and I'd feel happier if there was less code > to maintain, so please consider reverting the parameter parsing commit. > > Sorry if this makes all your effort for nothing, I took your ongoing work for the new API into account and I consider my parameter parsing code temporary. I mean once the API is frozen, I'll throw mine away and use that instead. Anyway I hope the trashed code would help somehow somewhere :) Moriyoshi -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /tests/run-test test008.phpt
moriyoshi Mon Jan 13 14:18:19 2003 EDT Modified files: /php4/tests/run-testtest008.phpt Log: Fixed typoFixed typoFixed typoFixed typoFixed typoFixed typoFixed typoFixed typo Index: php4/tests/run-test/test008.phpt diff -u php4/tests/run-test/test008.phpt:1.1 php4/tests/run-test/test008.phpt:1.2 --- php4/tests/run-test/test008.phpt:1.1Wed Jan 1 07:43:59 2003 +++ php4/tests/run-test/test008.phptMon Jan 13 14:18:18 2003 @@ -2,7 +2,7 @@ Error message handling (with ZendOptimizer) --SKIPIF-- --FILE-- http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4(PHP_4_3) /tests/run-test test008.phpt
moriyoshi Mon Jan 13 14:21:44 2003 EDT Modified files: (Branch: PHP_4_3) /php4/tests/run-testtest008.phpt Log: MFH # The typo I made in the previous commit log is not intentional :) Index: php4/tests/run-test/test008.phpt diff -u php4/tests/run-test/test008.phpt:1.1.2.1 php4/tests/run-test/test008.phpt:1.1.2.2 --- php4/tests/run-test/test008.phpt:1.1.2.1Wed Jan 1 07:44:47 2003 +++ php4/tests/run-test/test008.phptMon Jan 13 14:21:44 2003 @@ -2,7 +2,7 @@ Error message handling (with ZendOptimizer) --SKIPIF-- --FILE-- http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Mon Jan 13 20:23:36 2003 EDT Modified files: /php4/ext/standard filters.c Log: Fixed quoted-printable encoder so that it produces RFC2045 complicant output. As per this specification requirement, the constructor now accepts three options: binary (boolean), line-len (uint), line-break-chars (string). Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.15 php4/ext/standard/filters.c:1.16 --- php4/ext/standard/filters.c:1.15Mon Jan 13 06:00:22 2003 +++ php4/ext/standard/filters.c Mon Jan 13 20:23:35 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.15 2003/01/13 11:00:22 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.16 2003/01/14 01:23:35 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -653,22 +653,53 @@ /* {{{ php_conv_qprint_encode */ typedef struct _php_conv_qprint_encode { php_conv _super; + + int opts; + unsigned int line_ccnt; + unsigned int line_len; + const char *lbchars; + int lbchars_dup; + size_t lbchars_len; + int persistent; + unsigned int lb_ptr; + unsigned int lb_cnt; } php_conv_qprint_encode; +#define PHP_CONV_QPRINT_OPT_BINARY 0x0001 + static void php_conv_qprint_encode_dtor(php_conv_qprint_encode *inst); static php_conv_err_t php_conv_qprint_encode_convert(php_conv_qprint_encode *inst, const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p); static void php_conv_qprint_encode_dtor(php_conv_qprint_encode *inst) { - /* do nothing */ + assert(inst != NULL); + if (inst->lbchars_dup && inst->lbchars != NULL) { + pefree((void *)inst->lbchars, inst->persistent); + } } +#define NEXT_CHAR(ps, icnt, lb_ptr, lb_cnt, lbchars) \ + ((lb_cnt) < (lb_ptr) ? (lbchars)[(lb_cnt)] : *(ps)) + +#define CONSUME_CHAR(ps, icnt, lb_ptr, lb_cnt) \ + if ((lb_cnt) < (lb_ptr)) { \ + (lb_cnt)++; \ + } else { \ + (lb_cnt) = (lb_ptr) = 0; \ + --(icnt); \ + (ps)++; \ + } + static php_conv_err_t php_conv_qprint_encode_convert(php_conv_qprint_encode *inst, const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p) { php_conv_err_t err = PHP_CONV_ERR_SUCCESS; unsigned char *ps, *pd; size_t icnt, ocnt; unsigned int c; + unsigned int line_ccnt; + unsigned int lb_ptr; + unsigned int lb_cnt; + int opts; static char qp_digits[] = "0123456789ABCDEF"; if (in_pp == NULL || in_left_p == NULL) { @@ -679,18 +710,106 @@ icnt = *in_left_p; pd = (unsigned char *)(*out_pp); ocnt = *out_left_p; - - for (; icnt > 0; icnt--, ps++) { - c = *ps; + line_ccnt = inst->line_ccnt; + opts = inst->opts; + lb_ptr = inst->lb_ptr; + lb_cnt = inst->lb_cnt; + + while (icnt > 0) { + if (!(opts & PHP_CONV_QPRINT_OPT_BINARY) && inst->lbchars != NULL && +inst->lbchars_len > 0) { + /* look ahead for the line break chars to make a right decision +* how to consume incoming characters */ + + if (*ps == inst->lbchars[lb_cnt]) { + ps++; + icnt--; + lb_cnt++; + + if (lb_cnt >= inst->lbchars_len) { + unsigned int i; + + if (ocnt < lb_cnt) { + lb_cnt--; + err = PHP_CONV_ERR_TOO_BIG; + break; + } + + for (i = 0; i < lb_cnt; i++) { + *(pd++) = inst->lbchars[i]; + ocnt--; + } + line_ccnt = inst->line_len; + lb_ptr = lb_cnt = 0; + } + continue; + } + } + + c = NEXT_CHAR(ps, icnt, lb_ptr, lb_cnt, inst->lbchars); + + if (!(opts & PHP_CONV_QPRINT_OPT_BINARY) && (c == '\t' || c == ' ')) { + if (line_ccnt < 2 && inst->lbchars != NULL) { + if (ocnt < inst->lbchars_len + 1) { + err = PHP_CONV_ERR_TOO_BIG; + break; + } + + *(pd++) = '='; + ocnt--; + line_ccnt--; -
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Mon Jan 13 20:27:57 2003 EDT Modified files: /php4/ext/standard filters.c Log: Fixed small memory leak that occurs when the invalid line length is passed to the qprint ctor. Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.16 php4/ext/standard/filters.c:1.17 --- php4/ext/standard/filters.c:1.16Mon Jan 13 20:23:35 2003 +++ php4/ext/standard/filters.c Mon Jan 13 20:27:57 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.16 2003/01/14 01:23:35 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.17 2003/01/14 01:27:57 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -1264,6 +1264,9 @@ if (read_cd != NULL) { php_conv_dtor(read_cd); pefree(read_cd, persistent); + } + if (inst->filtername != NULL) { + pefree(inst->filtername, persistent); } return FAILURE; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard quot_print.c
moriyoshi Tue Jan 14 10:14:11 2003 EDT Modified files: /php4/ext/standard quot_print.c Log: Made php_quot_print_decode() RFC2045-compliant # this function is only used in iconv extension and the corresponding # userland function doesn't use it, so I don't see any BC issue here. Index: php4/ext/standard/quot_print.c diff -u php4/ext/standard/quot_print.c:1.24 php4/ext/standard/quot_print.c:1.25 --- php4/ext/standard/quot_print.c:1.24 Mon Jan 6 10:47:25 2003 +++ php4/ext/standard/quot_print.c Tue Jan 14 10:14:11 2003 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: quot_print.c,v 1.24 2003/01/06 15:47:25 moriyoshi Exp $ */ +/* $Id: quot_print.c,v 1.25 2003/01/14 15:14:11 moriyoshi Exp $ */ #include @@ -57,60 +57,78 @@ register unsigned char *p2; register unsigned int h_nbl, l_nbl; - size_t decoded_len; + size_t decoded_len, buf_size; unsigned char *retval; static unsigned int hexval_tbl[256] = { - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, -0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 16, 16, 16, 16, 16, - 16, 10, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 + 64, 64, 64, 64, 64, 64, 64, 64, 64, 32, 16, 64, 64, 16, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 32, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, +0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 64, 64, 64, 64, 64, 64, + 64, 10, 11, 12, 13, 14, 15, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 }; - i = length, p1 = str; decoded_len = length; + i = length, p1 = str; buf_size = length; - while (i > 0 && *p1 != '\0') { + while (i > 1 && *p1 != '\0') { if (*p1 == '=') { - decoded_len -= 2; - p1 += 2; - i -= 2; + buf_size -= 2; + p1++; + i--; } p1++; i--; } - retval = emalloc(decoded_len + 1); + retval = emalloc(buf_size + 1); i = length; p1 = str; p2 = retval; + decoded_len = 0; while (i > 0 && *p1 != '\0') { if (*p1 == '=') { - if (i < 2 || - (h_nbl = hexval_tbl[p1[1]]) > 15 || - (l_nbl = hexval_tbl[p1[2]]) > 15) { - + i--, p1++; + if (i == 0 || *p1 == '\0') { + break; + } + h_nbl = hexval_tbl[*p1]; + if (h_nbl < 16) { + /* next char should be a hexadecimal digit */ + if ((--i) == 0 || (l_nbl = hexval_tbl[*(++p1)]) >= 16) +{ +
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Tue Jan 14 11:42:19 2003 EDT Modified files: /php4/ext/standard filters.c Log: Added a new option "force-encode-first" to the quoted-printable encoder as per Wez's request. If enabled, the encoder forcefully does qp tranformation on every first character of lines in incoming stream. Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.17 php4/ext/standard/filters.c:1.18 --- php4/ext/standard/filters.c:1.17Mon Jan 13 20:27:57 2003 +++ php4/ext/standard/filters.c Tue Jan 14 11:42:18 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.17 2003/01/14 01:27:57 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.18 2003/01/14 16:42:18 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -665,7 +665,8 @@ unsigned int lb_cnt; } php_conv_qprint_encode; -#define PHP_CONV_QPRINT_OPT_BINARY 0x0001 +#define PHP_CONV_QPRINT_OPT_BINARY 0x0001 +#define PHP_CONV_QPRINT_OPT_FORCE_ENCODE_FIRST 0x0002 static void php_conv_qprint_encode_dtor(php_conv_qprint_encode *inst); static php_conv_err_t php_conv_qprint_encode_convert(php_conv_qprint_encode *inst, const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p); @@ -772,7 +773,7 @@ line_ccnt--; CONSUME_CHAR(ps, icnt, lb_ptr, lb_cnt); } - } else if ((c >= 33 && c <= 60) || (c >= 62 && c <= 126)) { + } else if ((!(opts & PHP_CONV_QPRINT_OPT_FORCE_ENCODE_FIRST) || +line_ccnt < inst->line_len) && ((c >= 33 && c <= 60) || (c >= 62 && c <= 126))) { if (line_ccnt < 2) { if (ocnt < inst->lbchars_len + 1) { err = PHP_CONV_ERR_TOO_BIG; @@ -1172,10 +1173,12 @@ if (options != NULL) { int opt_binary = 0; + int opt_force_encode_first = 0; GET_STR_PROP(options, lbchars, lbchars_len, "line-break-chars", 0); GET_UINT_PROP(options, line_len, "line-length"); GET_BOOL_PROP(options, opt_binary, "binary"); + GET_BOOL_PROP(options, opt_force_encode_first, +"force-encode-first"); if (line_len < 4) { if (lbchars != NULL) { @@ -1189,6 +1192,7 @@ } } opts |= (opt_binary ? PHP_CONV_QPRINT_OPT_BINARY : 0); + opts |= (opt_force_encode_first ? +PHP_CONV_QPRINT_OPT_FORCE_ENCODE_FIRST : 0); } retval = pemalloc(sizeof(php_conv_qprint_encode), persistent); if (lbchars != NULL) { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/iconv/tests iconv_mime_decode.phpt
moriyoshi Tue Jan 14 14:25:10 2003 EDT Modified files: /php4/ext/iconv/tests iconv_mime_decode.phpt Log: Test update for new feature Index: php4/ext/iconv/tests/iconv_mime_decode.phpt diff -u php4/ext/iconv/tests/iconv_mime_decode.phpt:1.1 php4/ext/iconv/tests/iconv_mime_decode.phpt:1.2 --- php4/ext/iconv/tests/iconv_mime_decode.phpt:1.1 Fri Jan 3 15:33:53 2003 +++ php4/ext/iconv/tests/iconv_mime_decode.phpt Tue Jan 14 14:25:10 2003 @@ -8,7 +8,7 @@ http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/iconv iconv.c
moriyoshi Tue Jan 14 14:26:00 2003 EDT Modified files: /php4/ext/iconv iconv.c Log: Appended my name to the list of authors Index: php4/ext/iconv/iconv.c diff -u php4/ext/iconv/iconv.c:1.81 php4/ext/iconv/iconv.c:1.82 --- php4/ext/iconv/iconv.c:1.81 Thu Jan 9 23:32:25 2003 +++ php4/ext/iconv/iconv.c Tue Jan 14 14:26:00 2003 @@ -14,10 +14,11 @@ +--+ | Authors: Rui Hirokawa <[EMAIL PROTECTED]> | | Stig Bakken <[EMAIL PROTECTED]> | + | Moriyoshi Koizumi <[EMAIL PROTECTED]> | +--+ */ -/* $Id: iconv.c,v 1.81 2003/01/10 04:32:25 moriyoshi Exp $ */ +/* $Id: iconv.c,v 1.82 2003/01/14 19:26:00 moriyoshi Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Wed Jan 15 10:05:18 2003 EDT Modified files: /php4/ext/standard filters.c Log: Fixed a qp encoder bug that the constructor sometimes fails if line-breaking mode is off. Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.18 php4/ext/standard/filters.c:1.19 --- php4/ext/standard/filters.c:1.18Tue Jan 14 11:42:18 2003 +++ php4/ext/standard/filters.c Wed Jan 15 10:05:17 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.18 2003/01/14 16:42:18 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.19 2003/01/15 15:05:17 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -838,7 +838,7 @@ static php_conv_err_t php_conv_qprint_encode_ctor(php_conv_qprint_encode *inst, unsigned int line_len, const char *lbchars, size_t lbchars_len, int lbchars_dup, int opts, int persistent) { - if (line_len < 4) { + if (line_len < 4 && lbchars != NULL) { return PHP_CONV_ERR_TOO_BIG; } inst->_super.convert_op = (php_conv_convert_func) php_conv_qprint_encode_convert; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Thu Jan 16 15:59:08 2003 EDT Modified files: /php4/ext/standard filters.c Log: Finally fixed a qp encoder bug that line break characters that appear exactly at the end of the chunk lost in the output. # I bet no more problems will occur in quoted-printable encoder. # But I recognised the counterpart is still buggy due to RFC2045-incompliance. Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.19 php4/ext/standard/filters.c:1.20 --- php4/ext/standard/filters.c:1.19Wed Jan 15 10:05:17 2003 +++ php4/ext/standard/filters.c Thu Jan 16 15:59:07 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.19 2003/01/15 15:05:17 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.20 2003/01/16 20:59:07 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -680,11 +680,11 @@ } #define NEXT_CHAR(ps, icnt, lb_ptr, lb_cnt, lbchars) \ - ((lb_cnt) < (lb_ptr) ? (lbchars)[(lb_cnt)] : *(ps)) + ((lb_ptr) < (lb_cnt) ? (lbchars)[(lb_ptr)] : *(ps)) #define CONSUME_CHAR(ps, icnt, lb_ptr, lb_cnt) \ - if ((lb_cnt) < (lb_ptr)) { \ - (lb_cnt)++; \ + if ((lb_ptr) < (lb_cnt)) { \ + (lb_ptr)++; \ } else { \ (lb_cnt) = (lb_ptr) = 0; \ --(icnt); \ @@ -703,7 +703,12 @@ int opts; static char qp_digits[] = "0123456789ABCDEF"; - if (in_pp == NULL || in_left_p == NULL) { + line_ccnt = inst->line_ccnt; + opts = inst->opts; + lb_ptr = inst->lb_ptr; + lb_cnt = inst->lb_cnt; + + if ((in_pp == NULL || in_left_p == NULL) && (lb_ptr >=lb_cnt)) { return PHP_CONV_ERR_SUCCESS; } @@ -711,19 +716,13 @@ icnt = *in_left_p; pd = (unsigned char *)(*out_pp); ocnt = *out_left_p; - line_ccnt = inst->line_ccnt; - opts = inst->opts; - lb_ptr = inst->lb_ptr; - lb_cnt = inst->lb_cnt; - while (icnt > 0) { + for (;;) { if (!(opts & PHP_CONV_QPRINT_OPT_BINARY) && inst->lbchars != NULL && inst->lbchars_len > 0) { /* look ahead for the line break chars to make a right decision * how to consume incoming characters */ - if (*ps == inst->lbchars[lb_cnt]) { - ps++; - icnt--; + if (icnt > 0 && *ps == inst->lbchars[lb_cnt]) { lb_cnt++; if (lb_cnt >= inst->lbchars_len) { @@ -742,9 +741,14 @@ line_ccnt = inst->line_len; lb_ptr = lb_cnt = 0; } + ps++, icnt--; continue; } } + + if (lb_ptr >= lb_cnt && icnt <= 0) { + break; + } c = NEXT_CHAR(ps, icnt, lb_ptr, lb_cnt, inst->lbchars); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Fri Jan 17 04:04:03 2003 EDT Modified files: /php4/ext/standard filters.c Log: Significant speed enhancements. I was underestimating the power of recent CPUs :) Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.20 php4/ext/standard/filters.c:1.21 --- php4/ext/standard/filters.c:1.20Thu Jan 16 15:59:07 2003 +++ php4/ext/standard/filters.c Fri Jan 17 04:04:02 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.20 2003/01/16 20:59:07 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.21 2003/01/17 09:04:02 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -533,6 +533,7 @@ /* do nothing */ } +#define bmask(a) (0x >> (16 - a)) static php_conv_err_t php_conv_base64_decode_convert(php_conv_base64_decode *inst, const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p) { php_conv_err_t err; @@ -545,12 +546,6 @@ const static unsigned int nbitsof_pack = 8; - static unsigned int bmask[17] = { - 0x, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, - 0x00ff, 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, - 0x - }; - if (in_pp == NULL || in_left_p == NULL) { if (inst->eos || inst->urem_nbits == 0) { return SUCCESS; @@ -580,7 +575,7 @@ } else { urem_nbits -= pack_bcnt; pack |= (urem >> urem_nbits); - urem &= bmask[urem_nbits]; + urem &= bmask(urem_nbits); pack_bcnt = 0; } if (pack_bcnt > 0) { @@ -606,7 +601,7 @@ } else { urem_nbits = 6 - pack_bcnt; pack |= (i >> urem_nbits); - urem = i & bmask[urem_nbits]; + urem = i & bmask(urem_nbits); pack_bcnt = 0; } } else if (ustat) { @@ -648,6 +643,7 @@ return err; } +#undef bmask /* }}} */ /* {{{ php_conv_qprint_encode */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard filters.c
moriyoshi Fri Jan 17 15:00:33 2003 EDT Modified files: /php4/ext/standard filters.c Log: Fixed a quoted printable decoder so that it would conform to RFC2045. Index: php4/ext/standard/filters.c diff -u php4/ext/standard/filters.c:1.21 php4/ext/standard/filters.c:1.22 --- php4/ext/standard/filters.c:1.21Fri Jan 17 04:04:02 2003 +++ php4/ext/standard/filters.c Fri Jan 17 15:00:31 2003 @@ -17,7 +17,7 @@ +--+ */ -/* $Id: filters.c,v 1.21 2003/01/17 09:04:02 moriyoshi Exp $ */ +/* $Id: filters.c,v 1.22 2003/01/17 20:00:31 moriyoshi Exp $ */ #include "php.h" #include "php_globals.h" @@ -865,11 +865,20 @@ int scan_stat; unsigned int next_char; + const char *lbchars; + int lbchars_dup; + size_t lbchars_len; + int persistent; + unsigned int lb_ptr; + unsigned int lb_cnt; } php_conv_qprint_decode; static void php_conv_qprint_decode_dtor(php_conv_qprint_decode *inst) { - /* do nothing */ + assert(inst != NULL); + if (inst->lbchars_dup && inst->lbchars != NULL) { + pefree((void *)inst->lbchars, inst->persistent); + } } static php_conv_err_t php_conv_qprint_decode_convert(php_conv_qprint_decode *inst, const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p) @@ -878,9 +887,13 @@ size_t icnt, ocnt; unsigned char *ps, *pd; unsigned int scan_stat; - unsigned int v; + unsigned int next_char; + unsigned int lb_ptr, lb_cnt; - if (in_pp == NULL || in_left_p == NULL) { + lb_ptr = inst->lb_ptr; + lb_cnt = inst->lb_cnt; + + if ((in_pp == NULL || in_left_p == NULL) && lb_cnt == lb_ptr) { if (inst->scan_stat != 0) { return PHP_CONV_ERR_UNEXPECTED_EOS; } @@ -892,12 +905,14 @@ pd = (unsigned char *)(*out_pp); ocnt = *out_left_p; scan_stat = inst->scan_stat; + next_char = inst->next_char; - v = 0; - - for (;icnt > 0; icnt--) { + for (;;) { switch (scan_stat) { case 0: { + if (icnt <= 0) { + goto out; + } if (*ps == '=') { scan_stat = 1; } else { @@ -908,41 +923,104 @@ *(pd++) = *ps; ocnt--; } + ps++, icnt--; } break; - case 1: case 2: { - unsigned int nbl = (*ps >= 'A' ? *ps - 0x37 : *ps - 0x30); + case 1: { + if (icnt <= 0) { + goto out; + } + if (*ps == ' ' || *ps == '\t') { + scan_stat = 4; + ps++, icnt--; + break; + } else if (lb_cnt < inst->lbchars_len && + *ps == (unsigned +char)inst->lbchars[lb_cnt]) { + lb_cnt++; + scan_stat = 5; + ps++, icnt--; + break; + } + } /* break is missing intentionally */ + + case 2: { + unsigned int nbl; + + if (icnt <= 0) { + goto out; + } + nbl = (*ps >= 'A' ? *ps - 0x37 : *ps - 0x30); if (nbl > 15) { err = PHP_CONV_ERR_INVALID_SEQ; goto out; } - v = (v << 4) | nbl; + next_char = (next_char << 4) | nbl; scan_stat++; - if (scan_stat == 3) { - if (ocnt < 1) { - inst->next_char = v; - err = PHP_CONV_ERR_TOO_BIG; - goto out; - } - *(pd++) = v; - ocnt--; - scan_stat = 0; + ps++, icnt--; +
[PHP-CVS] cvs: php4 /win32 md5crypt.c
moriyoshi Fri Jan 17 17:45:25 2003 EDT Modified files: /php4/win32 md5crypt.c Log: WS fix Index: php4/win32/md5crypt.c diff -u php4/win32/md5crypt.c:1.2 php4/win32/md5crypt.c:1.3 --- php4/win32/md5crypt.c:1.2 Tue Dec 31 10:59:14 2002 +++ php4/win32/md5crypt.c Fri Jan 17 17:45:23 2003 @@ -12,11 +12,11 @@ | obtain it through the world-wide-web, please send a note to | | [EMAIL PROTECTED] so we can mail you a copy immediately. | +--+ - | Author: Edin Kadribasic | + | Author: Edin Kadribasic | +--+ */ -/* $Id: md5crypt.c,v 1.2 2002/12/31 15:59:14 sebastian Exp $ */ +/* $Id: md5crypt.c,v 1.3 2003/01/17 22:45:23 moriyoshi Exp $ */ /* * -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 / header
moriyoshi Fri Jan 17 17:54:47 2003 EDT Modified files: /php4 header Log: Bump year. Index: php4/header diff -u php4/header:1.10 php4/header:1.11 --- php4/header:1.10Thu Feb 28 03:25:27 2002 +++ php4/header Fri Jan 17 17:54:47 2003 @@ -2,7 +2,7 @@ +--+ | PHP Version 4| +--+ - | Copyright (c) 1997-2002 The PHP Group| + | Copyright (c) 1997-2003 The PHP Group| +--+ | This source file is subject to version 2.02 of the PHP license, | | that is bundled with this package in the file LICENSE, and is| @@ -15,5 +15,5 @@ | Author: | +--+ - $Id: header,v 1.10 2002/02/28 08:25:27 sebastian Exp $ + $Id: header,v 1.11 2003/01/17 22:54:47 moriyoshi Exp $ */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard scanf.c
moriyoshi Sat Jan 18 13:31:14 2003 EDT Modified files: /php4/ext/standard scanf.c Log: Fixed bug #21726 and #21730 Index: php4/ext/standard/scanf.c diff -u php4/ext/standard/scanf.c:1.19 php4/ext/standard/scanf.c:1.20 --- php4/ext/standard/scanf.c:1.19 Tue Dec 31 11:07:54 2002 +++ php4/ext/standard/scanf.c Sat Jan 18 13:31:13 2003 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: scanf.c,v 1.19 2002/12/31 16:07:54 sebastian Exp $ */ +/* $Id: scanf.c,v 1.20 2003/01/18 18:31:13 moriyoshi Exp $ */ /* scanf.c -- @@ -762,9 +762,9 @@ case 'n': if (!(flags & SCAN_SUPPRESS)) { if (numVars) { -current = args[objIndex++]; -convert_to_long( *current ); -ZVAL_STRINGL( *current, string, end-string, 1); + current = args[objIndex++]; +zval_dtor( *current ); +ZVAL_LONG( *current, (long)(string - baseString) ); } else { add_index_long(*return_value, objIndex++, string - baseString); } @@ -883,8 +883,8 @@ if (!(flags & SCAN_SUPPRESS)) { if (numVars) { current = args[objIndex++]; -convert_to_string( *current ); -ZVAL_STRINGL( *current, string, end-string, 1); + zval_dtor( *current ); + ZVAL_STRINGL( *current, string, end-string, 1); } else { add_index_stringl( *return_value, objIndex++, string, end-string, 1); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard scanf.c
moriyoshi Sat Jan 18 13:49:47 2003 EDT Modified files: /php4/ext/standard scanf.c Log: Tons of WS fixes Index: php4/ext/standard/scanf.c diff -u php4/ext/standard/scanf.c:1.20 php4/ext/standard/scanf.c:1.21 --- php4/ext/standard/scanf.c:1.20 Sat Jan 18 13:31:13 2003 +++ php4/ext/standard/scanf.c Sat Jan 18 13:49:47 2003 @@ -16,13 +16,13 @@ +--+ */ -/* $Id: scanf.c,v 1.20 2003/01/18 18:31:13 moriyoshi Exp $ */ +/* $Id: scanf.c,v 1.21 2003/01/18 18:49:47 moriyoshi Exp $ */ /* scanf.c -- -This file contains the base code which implements sscanf and by extension -fscanf. Original code is from TCL8.3.0 and bears the following copyright + This file contains the base code which implements sscanf and by extension + fscanf. Original code is from TCL8.3.0 and bears the following copyright @@ -108,14 +108,14 @@ */ typedef struct CharSet { -int exclude; /* 1 if this is an exclusion set. */ -int nchars; -char *chars; -int nranges; -struct Range { -char start; -char end; -} *ranges; + int exclude;/* 1 if this is an exclusion set. */ + int nchars; + char *chars; + int nranges; + struct Range { + char start; + char end; + } *ranges; } CharSet; /* @@ -147,92 +147,92 @@ */ static char * BuildCharSet(CharSet *cset, char *format) { -char *ch, start; -int nranges; -char *end; - -memset(cset, 0, sizeof(CharSet)); - -ch = format; -if (*ch == '^') { -cset->exclude = 1; -ch = ++format; -} -end = format + 1;/* verify this - cc */ - -/* - * Find the close bracket so we can overallocate the set. - */ - -if (*ch == ']') { -ch = end++; -} -nranges = 0; -while (*ch != ']') { -if (*ch == '-') { -nranges++; -} -ch = end++; -} - -cset->chars = (char *) emalloc(sizeof(char) * (end - format - 1)); -if (nranges > 0) { -cset->ranges = (struct Range *) emalloc(sizeof(struct Range)*nranges); -} else { -cset->ranges = NULL; -} - -/* - * Now build the character set. - */ - -cset->nchars = cset->nranges = 0; -ch= format++; -start = *ch; -if (*ch == ']' || *ch == '-') { -cset->chars[cset->nchars++] = *ch; -ch = format++; -} -while (*ch != ']') { -if (*format == '-') { -/* - * This may be the first character of a range, so don't add - * it yet. - */ - -start = *ch; -} else if (*ch == '-') { -/* - * Check to see if this is the last character in the set, in which - * case it is not a range and we should add the previous character - * as well as the dash. - */ - -if (*format == ']') { -cset->chars[cset->nchars++] = start; -cset->chars[cset->nchars++] = *ch; -} else { -ch = format++; - -/* - * Check to see if the range is in reverse order. - */ - -if (start < *ch) { -cset->ranges[cset->nranges].start = start; -cset->ranges[cset->nranges].end = *ch; -} else { -cset->ranges[cset->nranges].start = *ch; -cset->ranges[cset->nranges].end = start; -} -cset->nranges++; - } -} else { -cset->chars[cset->nchars++] = *ch; -} -ch = format++; -} -return format; + char *ch, start; + int nranges; + char *end; + + memset(cset, 0, sizeof(CharSet)); + + ch = format; + if (*ch == '^') { + cset->exclude = 1; + ch = ++format; + } + end = format + 1;/* verify this - cc */ + + /* +* Find the close bracket so we can overallocate the set. +*/ + + if (*ch == ']') { + ch = end++; + } + nranges = 0; + while (*ch != ']') { + if (*ch == '-') { + nranges++; + } + ch = end++; + } + + cset->chars = (char *) emalloc(sizeof(char) * (end - format - 1)); + if (nranges > 0) { + cset->ranges = (struct Range *) emalloc(sizeof(struct Range)*nranges); + } else { + cset->ranges = NULL; + } + + /* +* Now build the character set. +*/ + + cset->nchars = cset->nranges = 0; + ch= format++; + start = *ch; + if (*ch == ']' || *ch == '-') { + cset->chars[cset->nchars++] = *ch; + ch = forma
[PHP-CVS] cvs: php4 /ext/standard/tests/strings bug21730.phpt
moriyoshi Sat Jan 18 13:59:27 2003 EDT Added files: /php4/ext/standard/tests/stringsbug21730.phpt Log: Added test case for bug #21730 Index: php4/ext/standard/tests/strings/bug21730.phpt +++ php4/ext/standard/tests/strings/bug21730.phpt --TEST-- Bug #21730 (*scanf "%n" conversion flag gives string instead of integer) --FILE-- --EXPECTS-- array(3) { [0]=> string(3) "ABC" [1]=> string(3) "DEF" [2]=> int(9) } array(3) { [0]=> string(3) "ABC" [1]=> string(3) "DEF" [2]=> int(9) } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard/tests/strings bug21730.phpt
moriyoshi Sat Jan 18 14:02:23 2003 EDT Modified files: /php4/ext/standard/tests/stringsbug21730.phpt Log: Fixed typo Index: php4/ext/standard/tests/strings/bug21730.phpt diff -u php4/ext/standard/tests/strings/bug21730.phpt:1.1 php4/ext/standard/tests/strings/bug21730.phpt:1.2 --- php4/ext/standard/tests/strings/bug21730.phpt:1.1 Sat Jan 18 13:59:27 2003 +++ php4/ext/standard/tests/strings/bug21730.phpt Sat Jan 18 14:02:21 2003 @@ -16,7 +16,7 @@ var_dump($res_a); var_dump($res_b); ?> ---EXPECTS-- +--EXPECT-- array(3) { [0]=> string(3) "ABC" -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php4 /ext/standard scanf.c
moriyoshi Sat Jan 18 14:26:02 2003 EDT Modified files: /php4/ext/standard scanf.c Log: WS Index: php4/ext/standard/scanf.c diff -u php4/ext/standard/scanf.c:1.21 php4/ext/standard/scanf.c:1.22 --- php4/ext/standard/scanf.c:1.21 Sat Jan 18 13:49:47 2003 +++ php4/ext/standard/scanf.c Sat Jan 18 14:26:01 2003 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: scanf.c,v 1.21 2003/01/18 18:49:47 moriyoshi Exp $ */ +/* $Id: scanf.c,v 1.22 2003/01/18 19:26:01 moriyoshi Exp $ */ /* scanf.c -- @@ -364,15 +364,15 @@ } if ( isdigit( (int)*ch ) ) { - /* - * Check for an XPG3-style %n$ specification. Note: there - * must not be a mixture of XPG3 specs and non-XPG3 specs - * in the same format string. - */ - - value = strtoul(format-1, &end, 10); - if (*end != '$') { - goto notXpg; + /* +* Check for an XPG3-style %n$ specification. Note: there +* must not be a mixture of XPG3 specs and non-XPG3 specs +* in the same format string. +*/ + + value = strtoul(format-1, &end, 10); + if (*end != '$') { + goto notXpg; } format = end+1; ch = format++; @@ -391,10 +391,10 @@ * guaranteed to be > 0. */ -/* set a lower artificial limit on this - * in the interest of security and resource friendliness - * 255 arguments should be more than enough. - cc - */ + /* set a lower artificial limit on this +* in the interest of security and resource +friendliness +* 255 arguments should be more than enough. - cc +*/ if (value > SCAN_MAX_ARGS) { goto badIndex; } @@ -402,7 +402,7 @@ xpgSize = (xpgSize > value) ? xpgSize : value; } goto xpgCheckDone; - } + } notXpg: gotSequential = 1; @@ -413,52 +413,52 @@ } xpgCheckDone: - /* -* Parse any width specifier. -*/ - - if (isdigit(UCHAR(*ch))) { - value = strtoul(format-1, &format, 10); - flags |= SCAN_WIDTH; - ch = format++; - } - - /* -* Ignore size specifier. -*/ + /* +* Parse any width specifier. +*/ + + if (isdigit(UCHAR(*ch))) { + value = strtoul(format-1, &format, 10); + flags |= SCAN_WIDTH; + ch = format++; + } - if ((*ch == 'l') || (*ch == 'L') || (*ch == 'h')) { - ch = format++; - } + /* +* Ignore size specifier. +*/ - if (!(flags & SCAN_SUPPRESS) && numVars && (objIndex >= numVars)) { - goto badIndex; - } + if ((*ch == 'l') || (*ch == 'L') || (*ch == 'h')) { + ch = format++; + } - /* -* Handle the various field types. -*/ + if (!(flags & SCAN_SUPPRESS) && numVars && (objIndex >= numVars)) { + goto badIndex; + } - switch (*ch) { - case 'n': - case 'd': - case 'D': - case 'i': - case 'o': - case 'x': - case 'X': - case 'u': - case 'f': - case 'e': - case 'E': - case 'g': - case 's': - break; - case 'c': - /* we differ here with the TCL implementation in allowing for */ - /* a character width specification, to be more consistent with */ - /* ANSI. since Zend auto allocates space for vars, this is no */ - /* problem - cc */ + /* +* Handle the various field types. +*/ + + switch (*ch) { + case 'n': +