From 9419bf42a1813ca05fc821a706d55b7bff867ede Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 19 Dec 2014 20:05:19 -0700 Subject: [PATCH] fix enforcement of size limit in prefab struct descriptions Closes PR 14888 --- pkgs/racket-test-core/tests/racket/struct.rktl | 6 ++++++ racket/src/racket/src/struct.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/racket-test-core/tests/racket/struct.rktl b/pkgs/racket-test-core/tests/racket/struct.rktl index 891e560c8f..e7fbad629b 100644 --- a/pkgs/racket-test-core/tests/racket/struct.rktl +++ b/pkgs/racket-test-core/tests/racket/struct.rktl @@ -1106,6 +1106,12 @@ (test #t procedure? acc) (test #t procedure? mut)) +;; ---------------------------------------- +;; Check that prefab struct size limit is enforced: + +(err/rt-test (make-prefab-struct '(foo 2999999999999999) 1)) +(err/rt-test (make-prefab-struct '(foo 5 bar 2999999999999999) 1)) + ;; ---------------------------------------- (report-errs) diff --git a/racket/src/racket/src/struct.c b/racket/src/racket/src/struct.c index 9ea1fad9ab..596dcb7596 100644 --- a/racket/src/racket/src/struct.c +++ b/racket/src/racket/src/struct.c @@ -5364,7 +5364,7 @@ Scheme_Struct_Type *scheme_lookup_prefab_type(Scheme_Object *key, int field_coun { Scheme_Struct_Type *parent = NULL; Scheme_Object *a, *uninit_val, *mutables, *name; - int ucnt, icnt; + intptr_t ucnt, icnt; char *immutable_array = NULL; if (SCHEME_SYMBOLP(key))