enum-set-indexer procedure now checks for a symbol, changed "isn't" to "is not" for consistency

original commit: 5df52745d793eb5a16cb6e55065f78f313170ed5
This commit is contained in:
Bob Burger 2017-04-20 17:39:33 -04:00 committed by Bob Burger
parent 15343364a9
commit d1a5bcf399
6 changed files with 35 additions and 20 deletions

3
LOG
View File

@ -450,3 +450,6 @@
Also add a simplification for for-each with empty lists
with optimization level 2.
cp0.ss, 4.ms, primdata.ss
- fix invalid memory reference when enum-set-indexer procedure is not
passed a symbol
enum.ss, enum.ms, root-experr*, release_notes.stex

View File

@ -101,6 +101,8 @@
(error? (make-enumeration 3))
(error? (enum-set-universe 3))
(error? (enum-set-indexer 3))
(error? (let ([e (make-enumeration '(a b c))])
((enum-set-indexer e) 1)))
(error? (enum-set->list 3))
(equal? '(a b)
(let ()

View File

@ -7625,19 +7625,20 @@ hash.mo:Expected error in mat hash-functions: "string-ci-hash: hello is not a st
hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #<eqv hashtable>".
hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #<hashtable>".
enum.mo:Expected error in mat enumeration: "enum-set-intersection: #<enum-set> and #<enum-set> have different enumeration types".
enum.mo:Expected error in mat enumeration: "enum-set-intersection: 1 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-intersection: 1 is not an enumeration".
enum.mo:Expected error in mat enumeration: "universe of foo does not include specified symbol d".
enum.mo:Expected error in mat enumeration: "universe of foo does not include specified symbol d".
enum.mo:Expected error in mat enumeration: "make-enumeration: 3 is not a list of symbols".
enum.mo:Expected error in mat enumeration: "enum-set-universe: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-indexer: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set->list: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-union: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-union: 4 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-universe: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-indexer: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-indexer: 1 is not a symbol".
enum.mo:Expected error in mat enumeration: "enum-set->list: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-union: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-union: 4 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-union: #<enum-set> and #<enum-set> have different enumeration types".
enum.mo:Expected error in mat enumeration: "enum-set-complement: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-projection: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-projection: 4 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-complement: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-projection: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-projection: 4 is not an enumeration".
enum.mo:Expected error in mat enumeration: "invalid syntax (define-enumeration 3 () bar)".
enum.mo:Expected error in mat enumeration: "invalid syntax (define-enumeration foo baz bar)".
enum.mo:Expected error in mat enumeration: "invalid syntax (define-enumeration foo () 3)".

View File

@ -7625,19 +7625,20 @@ hash.mo:Expected error in mat hash-functions: "string-ci-hash: hello is not a st
hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #<eqv hashtable>".
hash.mo:Expected error in mat fasl-other-hashtable: "fasl-write: invalid fasl object #<hashtable>".
enum.mo:Expected error in mat enumeration: "enum-set-intersection: #<enum-set> and #<enum-set> have different enumeration types".
enum.mo:Expected error in mat enumeration: "enum-set-intersection: 1 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-intersection: 1 is not an enumeration".
enum.mo:Expected error in mat enumeration: "universe of foo does not include specified symbol d".
enum.mo:Expected error in mat enumeration: "universe of foo does not include specified symbol d".
enum.mo:Expected error in mat enumeration: "make-enumeration: 3 is not a list of symbols".
enum.mo:Expected error in mat enumeration: "enum-set-universe: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-indexer: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set->list: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-union: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-union: 4 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-universe: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-indexer: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-indexer: 1 is not a symbol".
enum.mo:Expected error in mat enumeration: "enum-set->list: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-union: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-union: 4 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-union: #<enum-set> and #<enum-set> have different enumeration types".
enum.mo:Expected error in mat enumeration: "enum-set-complement: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-projection: 3 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-projection: 4 isn't an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-complement: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-projection: 3 is not an enumeration".
enum.mo:Expected error in mat enumeration: "enum-set-projection: 4 is not an enumeration".
enum.mo:Expected error in mat enumeration: "invalid syntax (define-enumeration 3 () bar)".
enum.mo:Expected error in mat enumeration: "invalid syntax (define-enumeration foo baz bar)".
enum.mo:Expected error in mat enumeration: "invalid syntax (define-enumeration foo () 3)".

View File

@ -1490,6 +1490,12 @@ in fasl files does not generally make sense.
%-----------------------------------------------------------------------------
\section{Bug Fixes}\label{section:bugfixes}
\subsection{Invalid memory reference when \protect\scheme{enum-set-indexer} procedure is not passed a symbol}
A bug that caused the procedure returned by \scheme{enum-set-indexer}
to perform an invalid memory reference when passed an argument that is
not a symbol has been fixed.
\subsection{Storage for inaccessible mutexes and conditions is reclaimed (9.4.1)}
The C heap storage for inaccessible mutexes and conditions is now reclaimed.

View File

@ -116,7 +116,7 @@ an-enum-set:
(let ([rtd (record-rtd enum-set)])
(and (eq? (record-rtd rtd) enum-base-rtd)
rtd)))
($oops who "~s isn't an enumeration" enum-set)))
($oops who "~s is not an enumeration" enum-set)))
(define (assert-symbol-list who symbol-list)
(unless (and (list? symbol-list)
@ -210,7 +210,9 @@ an-enum-set:
(set! enum-set-indexer
(lambda (enum-set)
(let ([sym->index (get-sym->index (enum-set-rtd 'enum-set-indexer enum-set))])
(lambda (x) (symbol-hashtable-ref sym->index x #f)))))
(lambda (x)
(assert-symbol 'enum-set-indexer x)
(symbol-hashtable-ref sym->index x #f)))))
(set! enum-set-constructor
(lambda (enum-set)