diff options
-rw-r--r-- | src/library.js | 4 | ||||
-rwxr-xr-x | tests/runner.py | 24 |
2 files changed, 26 insertions, 2 deletions
diff --git a/src/library.js b/src/library.js index c3f7c600..25195415 100644 --- a/src/library.js +++ b/src/library.js @@ -3215,7 +3215,7 @@ LibraryManager.library = { var streamObj = FS.streams[stream]; if (bytesRead == -1) { if (streamObj) streamObj.error = true; - return -1; + return 0; } else { if (bytesRead < bytesToRead) streamObj.eof = true; return Math.floor(bytesRead / size); @@ -3299,7 +3299,7 @@ LibraryManager.library = { var bytesWritten = _write(stream, ptr, bytesToWrite); if (bytesWritten == -1) { if (FS.streams[stream]) FS.streams[stream].error = true; - return -1; + return 0; } else { return Math.floor(bytesWritten / size); } diff --git a/tests/runner.py b/tests/runner.py index 1e5841a4..da37583d 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -4498,6 +4498,30 @@ def process(filename): ''' self.do_run(src, 'isatty? 0,0,1\ngot: 35\ngot: 45\ngot: 25\ngot: 15\n', post_build=post) + def test_fwrite_0(self): + src = r''' + #include <stdio.h> + #include <stdlib.h> + + int main () + { + FILE *fh; + + fh = fopen("a.txt", "wb"); + if (!fh) exit(1); + fclose(fh); + + fh = fopen("a.txt", "rb"); + if (!fh) exit(1); + + char data[] = "foobar"; + size_t written = fwrite(data, 1, sizeof(data), fh); + + printf("written=%zu\n", written); + } + ''' + self.do_run(src, 'written=0') + def test_fgetc_unsigned(self): if self.emcc_args is None: return self.skip('requires emcc') src = r''' |