Skip to content

Commit cf2626f

Browse files
committed
Fixed bug #65947 (basename is no more working after fgetcsv in certain situation)
previous codes: "#define php_mblen(ptr, len) ((ptr) == NULL ? mbsinit(&BG(mblen_state)): (int)mbrlen(ptr, len, &BG(mblen_state)))# it use mbsinit there, seems try to initialize the mblen_state, but: "This function does not change the state identified by ps. Typical ways to make the state pointed by ps an initial state are: memset (ps,0,sizeof(*ps)); // ps points to zero-valued object " http://www.cplusplus.com/reference/cwchar/mbsinit/?kw=mbsinit
1 parent fd3fa9b commit cf2626f

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

NEWS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ PHP NEWS
22
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
33
?? ??? 2013, PHP 5.4.23
44

5+
- Core:
6+
. Fixed bug #65947 (basename is no more working after fgetcsv in certain
7+
situation). (Laruence)
8+
59
- MySQLi:
610
. Fixed bug #66043 (Segfault calling bind_param() on mysqli). (Laruence)
711

ext/standard/php_string.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ PHPAPI char *php_strerror(int errnum);
156156
# define php_mblen(ptr, len) 1
157157
#else
158158
# if defined(_REENTRANT) && defined(HAVE_MBRLEN) && defined(HAVE_MBSTATE_T)
159-
# define php_mblen(ptr, len) ((ptr) == NULL ? mbsinit(&BG(mblen_state)): (int)mbrlen(ptr, len, &BG(mblen_state)))
159+
# define php_mblen(ptr, len) ((ptr) == NULL ? memset(&BG(mblen_state), 0, sizeof(BG(mblen_state))): (int)mbrlen(ptr, len, &BG(mblen_state)))
160160
# else
161161
# define php_mblen(ptr, len) mblen(ptr, len)
162162
# endif
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
Bug #65947 (basename is no more working after fgetcsv in certain situation)
3+
--SKIPIF--
4+
<?php if (!PHP_ZTS) { print "skip only for zts build"; }
5+
--FILE--
6+
<?php
7+
$filename = 'test.toto';
8+
// é in ISO-8859-1
9+
$csv = base64_decode('6Q==');
10+
$adata = str_getcsv($csv,";");
11+
$b2 = basename($filename);
12+
if ($filename != $b2)
13+
print "BUG";
14+
else
15+
print "OKEY";
16+
--EXPECTF--
17+
OKEY

0 commit comments

Comments
 (0)