Skip to content

Commit 5251ae5

Browse files
committed
Remove mbfl_strlen call when offset is positive in strpos functions
1 parent 174ebba commit 5251ae5

File tree

1 file changed

+9
-38
lines changed

1 file changed

+9
-38
lines changed

ext/mbstring/tests/mb_strpos.phpt

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ include_once('common.inc');
1111

1212

1313
// Test string
14-
$euc_jp = '0123????????????EUC-JP????????0123?????????';
14+
$euc_jp = '0123この文字列は日本語です。EUC-JPを使っています。0123日本語は面倒臭い。';
1515

1616
$slen = mb_strlen($euc_jp, 'EUC-JP');
1717
echo "String len: $slen\n";
@@ -21,11 +21,11 @@ mb_internal_encoding('UTF-8') or print("mb_internal_encoding() failed\n");
2121

2222
echo "== POSITIVE OFFSET ==\n";
2323

24-
print mb_strpos($euc_jp, '???', 0, 'EUC-JP') . "\n";
24+
print mb_strpos($euc_jp, '日本語', 0, 'EUC-JP') . "\n";
2525
print mb_strpos($euc_jp, '0', 0, 'EUC-JP') . "\n";
2626
print mb_strpos($euc_jp, 3, 0, 'EUC-JP') . "\n";
2727
print mb_strpos($euc_jp, 0, 0, 'EUC-JP') . "\n";
28-
print mb_strpos($euc_jp, '???', 15, 'EUC-JP') . "\n";
28+
print mb_strpos($euc_jp, '日本語', 15, 'EUC-JP') . "\n";
2929
print mb_strpos($euc_jp, '0', 15, 'EUC-JP') . "\n";
3030
print mb_strpos($euc_jp, 3, 15, 'EUC-JP') . "\n";
3131
print mb_strpos($euc_jp, 0, 15, 'EUC-JP') . "\n";
@@ -34,37 +34,17 @@ print mb_strpos($euc_jp, 0, 15, 'EUC-JP') . "\n";
3434
// Negative offset
3535
echo "== NEGATIVE OFFSET ==\n";
3636

37-
print mb_strpos($euc_jp, '???', -15, 'EUC-JP') . "\n";
37+
print mb_strpos($euc_jp, '日本語', -15, 'EUC-JP') . "\n";
3838
print mb_strpos($euc_jp, '0', -15, 'EUC-JP') . "\n";
3939
print mb_strpos($euc_jp, 3, -15, 'EUC-JP') . "\n";
4040
print mb_strpos($euc_jp, 0, -15, 'EUC-JP') . "\n";
4141
print mb_strpos($euc_jp, 0, -43, 'EUC-JP') . "\n";
4242

43-
// Out of range - should return false
44-
print ("== OUT OF RANGE ==\n");
45-
46-
$r = mb_strpos($euc_jp, '???', 40, 'EUC-JP');
47-
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
48-
$r = mb_strpos($euc_jp, '0', 40, 'EUC-JP');
49-
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
50-
$r = mb_strpos($euc_jp, 3, 40, 'EUC-JP');
51-
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
52-
$r = mb_strpos($euc_jp, 0, 40, 'EUC-JP');
53-
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
54-
$r = mb_strpos($euc_jp, '???', -3, 'EUC-JP');
55-
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
56-
$r = mb_strpos($euc_jp, '0', -3, 'EUC-JP');
57-
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
58-
$r = mb_strpos($euc_jp, 3, -3, 'EUC-JP');
59-
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
60-
$r = mb_strpos($euc_jp, 0, -3, 'EUC-JP');
61-
($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n";
62-
6343

6444
// Non-existent
6545
echo "== NON-EXISTENT ==\n";
6646

67-
$r = mb_strpos($euc_jp, '???', 0, 'EUC-JP');
47+
$r = mb_strpos($euc_jp, '韓国語', 0, 'EUC-JP');
6848
($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n";
6949
$r = mb_strpos($euc_jp, "\n", 0, 'EUC-JP');
7050
($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
@@ -75,12 +55,12 @@ echo "== NO ENCODING PARAMETER ==\n";
7555

7656
mb_internal_encoding('EUC-JP') or print("mb_internal_encoding() failed\n");
7757

78-
print mb_strpos($euc_jp, '???', 0) . "\n";
58+
print mb_strpos($euc_jp, '日本語', 0) . "\n";
7959
print mb_strpos($euc_jp, '0', 0) . "\n";
8060
print mb_strpos($euc_jp, 3, 0) . "\n";
8161
print mb_strpos($euc_jp, 0, 0) . "\n";
8262

83-
$r = mb_strpos($euc_jp, '???', 0);
63+
$r = mb_strpos($euc_jp, '韓国語', 0);
8464
($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n";
8565
$r = mb_strpos($euc_jp, "\n", 0);
8666
($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
@@ -90,12 +70,12 @@ echo "== NO OFFSET AND ENCODING PARAMETER ==\n";
9070

9171
mb_internal_encoding('EUC-JP') or print("mb_internal_encoding() failed\n");
9272

93-
print mb_strpos($euc_jp, '???') . "\n";
73+
print mb_strpos($euc_jp, '日本語') . "\n";
9474
print mb_strpos($euc_jp, '0') . "\n";
9575
print mb_strpos($euc_jp, 3) . "\n";
9676
print mb_strpos($euc_jp, 0) . "\n";
9777

98-
$r = mb_strpos($euc_jp, '???');
78+
$r = mb_strpos($euc_jp, '韓国語');
9979
($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n";
10080
$r = mb_strpos($euc_jp, "\n");
10181
($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
@@ -118,15 +98,6 @@ String len: 43
11898
33
11999
30
120100
0
121-
== OUT OF RANGE ==
122-
OK_OUT_RANGE
123-
OK_OUT_RANGE
124-
OK_OUT_RANGE
125-
OK_OUT_RANGE
126-
OK_OUT_RANGE
127-
OK_OUT_RANGE
128-
OK_OUT_RANGE
129-
OK_OUT_RANGE
130101
== NON-EXISTENT ==
131102
OK_STR
132103
OK_NEWLINE

0 commit comments

Comments
 (0)