From 21a3ded089842de37d395309ed9b4f7463c17bd5 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 1 Aug 2005 22:47:54 +0000 Subject: [PATCH] hash-table-copy should produce mutable table, PR 7519 svn: r529 --- collects/tests/mzscheme/basic.ss | 3 +++ src/mzscheme/src/hash.c | 1 + src/mzscheme/src/string.c | 1 + 3 files changed, 5 insertions(+) diff --git a/collects/tests/mzscheme/basic.ss b/collects/tests/mzscheme/basic.ss index 70bdad01f6..b9a180f304 100644 --- a/collects/tests/mzscheme/basic.ss +++ b/collects/tests/mzscheme/basic.ss @@ -1968,6 +1968,9 @@ (err/rt-test (make-immutable-hash-table cyclic-alist)) (err/rt-test (make-immutable-hash-table '((1 . 2)) 'weak)) +(test 2 hash-table-get (hash-table-copy #hasheq((1 . 2))) 1) +(test (void) hash-table-put! (hash-table-copy #hasheq((1 . 2))) 3 4) + (arity-test make-hash-table 0 2) (arity-test make-immutable-hash-table 1 2) (arity-test hash-table-count 1 1) diff --git a/src/mzscheme/src/hash.c b/src/mzscheme/src/hash.c index 5700253ab5..550e05ee01 100644 --- a/src/mzscheme/src/hash.c +++ b/src/mzscheme/src/hash.c @@ -303,6 +303,7 @@ Scheme_Hash_Table *scheme_clone_hash_table(Scheme_Hash_Table *ht) table = MALLOC_ONE_TAGGED(Scheme_Hash_Table); memcpy(table, ht, sizeof(Scheme_Hash_Table)); + MZ_OPT_HASH_KEY(&(table->iso)) = 0; if (table->size) { ba = MALLOC_N(Scheme_Object *, table->size); diff --git a/src/mzscheme/src/string.c b/src/mzscheme/src/string.c index 2c1b6bc68e..086ed3ff78 100644 --- a/src/mzscheme/src/string.c +++ b/src/mzscheme/src/string.c @@ -3713,6 +3713,7 @@ static int utf8_decode_x(const unsigned char *s, int start, int end, and [d]end) before return, unless they are NULL. compact => UTF-8 to UTF-8 or UTF-16 --- the latter if utf16 + !compact && utf16 => decode extended UTF-8 that allows surrogates _state provides initial state and is filled with ending state; when it's not NULL, the us must be NULL