From 4cd6d384bde0f0641e88ae5431d5b6bdfff4ac83 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Tue, 17 Dec 2019 17:52:18 +0100 Subject: [PATCH] Fix #78976: SplFileObject::fputcsv returns -1 on failure `php_stream_write()` returns `-1` on failure now, which has to be catered to by `SplFileObject::fputcsv()` which still is supposed to return `false` on failure. --- NEWS | 3 +++ ext/spl/spl_directory.c | 3 +++ ext/spl/tests/bug78976.phpt | 9 +++++++++ 3 files changed, 15 insertions(+) create mode 100644 ext/spl/tests/bug78976.phpt diff --git a/NEWS b/NEWS index adc5ae1cc8..39bdee3618 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,9 @@ PHP NEWS . Fixed bug #78903 (Conflict in RTD key for closures results in crash). (Nikita) +- Spl: + . Fixed bug #78976 (SplFileObject::fputcsv returns -1 on failure). (cmb) + 19 Dec 2019, PHP 7.4.1 - Core: diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index d21d9034cd..0b276fcb42 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -2668,6 +2668,9 @@ SPL_METHOD(SplFileObject, fputcsv) break; } ret = php_fputcsv(intern->u.file.stream, fields, delimiter, enclosure, escape); + if (ret < 0) { + RETURN_FALSE; + } RETURN_LONG(ret); } } diff --git a/ext/spl/tests/bug78976.phpt b/ext/spl/tests/bug78976.phpt new file mode 100644 index 0000000000..059807eb74 --- /dev/null +++ b/ext/spl/tests/bug78976.phpt @@ -0,0 +1,9 @@ +--TEST-- +Bug #78976 (SplFileObject::fputcsv returns -1 on failure) +--FILE-- +fputcsv(['foo', 'bar'])); +?> +--EXPECT-- +bool(false) -- 2.40.0