Skip to content

Commit

Permalink
fix single-argument write-byte and write-char
Browse files Browse the repository at this point in the history
Repairs a mistake in 8e7792d

Closes PR 15363
  • Loading branch information
mflatt committed Oct 4, 2016
1 parent c08a2fd commit 9887669
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
14 changes: 14 additions & 0 deletions pkgs/racket-test-core/tests/racket/file.rktl
Original file line number Diff line number Diff line change
Expand Up @@ -1849,6 +1849,20 @@
resolve-path
"C:https://testing-root////testing-dir\\\\testing-file")]))

;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Make sure `write-byte` and `write-char` don't try to test
;; a non-supplied argument:

(parameterize ([current-output-port (open-output-string)])
(let ([s (if (zero? (random 1)) "a" "b")])
(string-append s s) ; causes a clear operation on the runstack for second argument
(write-byte 65)))

(parameterize ([current-output-port (open-output-string)])
(let ([s (if (zero? (random 1)) "a" "b")])
(string-append s s) ; causes a clear operation on the runstack for second argument
(write-char #\A)))

;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(report-errs)
2 changes: 2 additions & 0 deletions racket/src/racket/src/portfun.c
Original file line number Diff line number Diff line change
Expand Up @@ -4171,6 +4171,7 @@ write_byte (int argc, GC_CAN_IGNORE Scheme_Object *argv[]) XFORM_ASSERT_NO_CONVE
if (SCHEME_INTP(argv[0])
&& (SCHEME_INT_VAL(argv[0]) >= 0)
&& (SCHEME_INT_VAL(argv[0]) <= 255)
&& (argc > 1)
&& SCHEME_OUTPUT_PORTP(argv[1])) {
char buffer[1];
buffer[0] = SCHEME_INT_VAL(argv[0]);
Expand Down Expand Up @@ -4215,6 +4216,7 @@ write_char (int argc, GC_CAN_IGNORE Scheme_Object *argv[]) XFORM_ASSERT_NO_CONVE
if (argc
&& SCHEME_CHARP(argv[0])
&& (SCHEME_CHAR_VAL(argv[0]) < 128)
&& (argc > 1)
&& SCHEME_OUTPUT_PORTP(argv[1])) {
char buffer[1];
buffer[0] = SCHEME_CHAR_VAL(argv[0]);
Expand Down

0 comments on commit 9887669

Please sign in to comment.