Skip to content

Commit 8c5abca

Browse files
Revert "Stop trying to show the original value"
This reverts commit 8c9c0db.
1 parent 0a513b2 commit 8c5abca

File tree

5 files changed

+24
-12
lines changed

5 files changed

+24
-12
lines changed

ext/filter/filter.c

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -280,16 +280,28 @@ static void php_zval_filter(zval *value, zend_long filter, zend_long flags, zval
280280
/* Here be strings */
281281
convert_to_string(value);
282282

283+
zend_string *copy_for_throwing = NULL;
284+
if (flags & FILTER_THROW_ON_FAILURE) {
285+
copy_for_throwing = zend_string_copy(Z_STR_P(value));
286+
}
287+
283288
zend_result result = filter_func.function(value, flags, options, charset);
284289

285-
if ((flags & FILTER_THROW_ON_FAILURE) && result == FAILURE) {
286-
zend_throw_exception_ex(
287-
php_filter_failed_exception_ce,
288-
0,
289-
"filter validation failed: filter %s not satisfied",
290-
filter_func.name
291-
);
292-
return;
290+
if (flags & FILTER_THROW_ON_FAILURE) {
291+
ZEND_ASSERT(copy_for_throwing != NULL);
292+
if (result == FAILURE) {
293+
zend_throw_exception_ex(
294+
php_filter_failed_exception_ce,
295+
0,
296+
"filter validation failed: filter %s not satisfied by %s",
297+
filter_func.name,
298+
ZSTR_VAL(copy_for_throwing)
299+
);
300+
zend_string_delref(copy_for_throwing);
301+
return;
302+
}
303+
zend_string_delref(copy_for_throwing);
304+
copy_for_throwing = NULL;
293305
}
294306

295307
handle_default:

ext/filter/tests/throw-on-failure/filter_input_array_failure.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,4 @@ validation fails (array type check)
2626
Filter\FilterFailedException: filter validation failed: not an array (got string)
2727

2828
validation fails (filter value)
29-
Filter\FilterFailedException: filter validation failed: filter validate_email not satisfied
29+
Filter\FilterFailedException: filter validation failed: filter validate_email not satisfied by 1

ext/filter/tests/throw-on-failure/filter_input_failure.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ validation fails (array type check)
3636
Filter\FilterFailedException: filter validation failed: not an array (got string)
3737

3838
validation fails (filter value)
39-
Filter\FilterFailedException: filter validation failed: filter validate_email not satisfied
39+
Filter\FilterFailedException: filter validation failed: filter validate_email not satisfied by 1

ext/filter/tests/throw-on-failure/filter_var_array_failure.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ validation fails (object without __toString)
3636
Filter\FilterFailedException: filter validation failed: object of type stdClass has no __toString() method
3737

3838
validation fails (filter value)
39-
Filter\FilterFailedException: filter validation failed: filter validate_email not satisfied
39+
Filter\FilterFailedException: filter validation failed: filter validate_email not satisfied by 1

ext/filter/tests/throw-on-failure/filter_var_failure.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,4 @@ validation fails (object without __toString)
3434
Filter\FilterFailedException: filter validation failed: object of type stdClass has no __toString() method
3535

3636
validation fails (filter value)
37-
Filter\FilterFailedException: filter validation failed: filter validate_email not satisfied
37+
Filter\FilterFailedException: filter validation failed: filter validate_email not satisfied by a

0 commit comments

Comments
 (0)