Skip to content

Commit 889d598

Browse files
committed
Promote warnings to exceptions in *scanf() functions
1 parent 9d0a000 commit 889d598

File tree

4 files changed

+25
-27
lines changed

4 files changed

+25
-27
lines changed

ext/standard/scanf.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -469,11 +469,11 @@ PHPAPI int ValidateFormat(char *format, int numVars, int *totalSubs)
469469
}
470470
break;
471471
badSet:
472-
php_error_docref(NULL, E_WARNING, "Unmatched [ in format string");
472+
zend_value_error("Unmatched [ in format string");
473473
goto error;
474474

475475
default: {
476-
php_error_docref(NULL, E_WARNING, "Bad scan conversion character \"%c\"", *ch);
476+
zend_value_error("Bad scan conversion character \"%c\"", *ch);
477477
goto error;
478478
}
479479
}
@@ -618,7 +618,7 @@ PHPAPI int php_sscanf_internal( char *string, char *format,
618618
if (numVars) {
619619
for (i = varStart;i < argCount;i++){
620620
if ( ! Z_ISREF(args[ i ] ) ) {
621-
php_error_docref(NULL, E_WARNING, "Parameter %d must be passed by reference", i);
621+
zend_value_error("Parameter %d must be passed by reference", i);
622622
scan_set_error_return(numVars, return_value);
623623
return SCAN_ERROR_VAR_PASSED_BYVAL;
624624
}

ext/standard/tests/file/fscanf.phpt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,11 @@ fclose($fp);
3434
$v = array();
3535
$v1 = array();
3636
$fp = fopen($filename, "rt");
37-
var_dump(fscanf($fp, "%.a", $v, $v1));
37+
try {
38+
fscanf($fp, "%.a", $v, $v1);
39+
} catch (ValueError $exception) {
40+
echo $exception->getMessage() . "\n";
41+
}
3842
var_dump($v);
3943
var_dump($v1);
4044
fclose($fp);
@@ -76,9 +80,7 @@ array(0) {
7680
}
7781
array(0) {
7882
}
79-
80-
Warning: fscanf(): Bad scan conversion character "." in %s on line %d
81-
int(-1)
83+
Bad scan conversion character "."
8284
array(0) {
8385
}
8486
array(0) {

ext/standard/tests/file/fscanf_error.phpt

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,11 @@ foreach($invalid_formats as $format) {
4242
$file_handle = fopen($filename, 'r');
4343
if ($file_handle == false)
4444
exit("Error:failed to open file $filename");
45-
var_dump( fscanf($file_handle, $format) );
45+
try {
46+
var_dump( fscanf($file_handle, $format) );
47+
} catch (ValueError $exception) {
48+
echo $exception->getMessage() . "\n";
49+
}
4650
fclose($file_handle);
4751
}
4852

@@ -64,17 +68,9 @@ int(-1)
6468
Warning: Undefined variable: undefined_var in %s on line %d
6569
array(0) {
6670
}
67-
68-
Warning: fscanf(): Bad scan conversion character " in %s on line %d
69-
NULL
70-
71-
Warning: fscanf(): Bad scan conversion character " in %s on line %d
72-
NULL
73-
74-
Warning: fscanf(): Bad scan conversion character "." in %s on line %d
75-
NULL
76-
77-
Warning: fscanf(): Bad scan conversion character "m" in %s on line %d
78-
NULL
71+
Bad scan conversion character "
72+
Bad scan conversion character "
73+
Bad scan conversion character "."
74+
Bad scan conversion character "m"
7975

8076
*** Done ***

ext/standard/tests/file/fscanf_variation10.phpt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,11 @@ foreach($float_formats as $float_format) {
6161
rewind($file_handle);
6262
echo "\n-- iteration $counter --\n";
6363
while( !feof($file_handle) ) {
64-
var_dump( fscanf($file_handle,$float_format) );
64+
try {
65+
var_dump( fscanf($file_handle,$float_format) );
66+
} catch (ValueError $exception) {
67+
echo $exception->getMessage() . "\n";
68+
}
6569
}
6670
$counter++;
6771
}
@@ -148,12 +152,8 @@ array(1) {
148152
bool(false)
149153

150154
-- iteration 7 --
151-
152-
Warning: fscanf(): Bad scan conversion character " " in %s on line %d
153-
NULL
154-
155-
Warning: fscanf(): Bad scan conversion character " " in %s on line %d
156-
NULL
155+
Bad scan conversion character " "
156+
Bad scan conversion character " "
157157
bool(false)
158158

159159
-- iteration 8 --

0 commit comments

Comments
 (0)