mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Make `symbol->string' return a read-only string.
* libguile/strings.c (scm_i_symbol_substring): Return a read-only string since R5RS requires `symbol->string' to return a read-only string. Reported by Bill Schottstaedt <bil@ccrma.Stanford.EDU>. * test-suite/tests/symbols.test: Add `define-module' clause. (exception:immutable-string): Adjust to current exception. ("symbol->string")["result is an immutable string"]: Use `pass-if-exception' instead of `expect-fail-exception'. * NEWS: Update.
This commit is contained in:
parent
1dd797921c
commit
fd2b17b9cb
3 changed files with 8 additions and 7 deletions
1
NEWS
1
NEWS
|
@ -63,6 +63,7 @@ available: Guile is now always configured in "maintainer mode".
|
|||
|
||||
* Bugs fixed
|
||||
|
||||
** `symbol->string' now returns a read-only string, as per R5RS
|
||||
** `guile-config link' now prints `-L$libdir' before `-lguile'
|
||||
** Fix memory corruption involving GOOPS' `class-redefinition'
|
||||
** Fix possible deadlock in `mutex-lock'
|
||||
|
|
|
@ -491,7 +491,7 @@ scm_i_symbol_substring (SCM sym, size_t start, size_t end)
|
|||
scm_i_pthread_mutex_lock (&stringbuf_write_mutex);
|
||||
SET_STRINGBUF_SHARED (buf);
|
||||
scm_i_pthread_mutex_unlock (&stringbuf_write_mutex);
|
||||
return scm_double_cell (STRING_TAG, SCM_UNPACK(buf),
|
||||
return scm_double_cell (RO_STRING_TAG, SCM_UNPACK (buf),
|
||||
(scm_t_bits)start, (scm_t_bits) end - start);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
;;;; symbols.test --- test suite for Guile's symbols -*- scheme -*-
|
||||
;;;;
|
||||
;;;; Copyright (C) 2001, 2006 Free Software Foundation, Inc.
|
||||
;;;; Copyright (C) 2001, 2006, 2008 Free Software Foundation, Inc.
|
||||
;;;;
|
||||
;;;; This program is free software; you can redistribute it and/or modify
|
||||
;;;; it under the terms of the GNU General Public License as published by
|
||||
|
@ -17,17 +17,17 @@
|
|||
;;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
;;;; Boston, MA 02110-1301 USA
|
||||
|
||||
(use-modules (ice-9 documentation))
|
||||
(define-module (test-suite test-symbols)
|
||||
#:use-module (test-suite lib)
|
||||
#:use-module (ice-9 documentation))
|
||||
|
||||
|
||||
;;;
|
||||
;;; miscellaneous
|
||||
;;;
|
||||
|
||||
;; FIXME: As soon as guile supports immutable strings, this has to be
|
||||
;; replaced with the appropriate error type and message.
|
||||
(define exception:immutable-string
|
||||
(cons 'some-error-type "^trying to modify an immutable string"))
|
||||
(cons 'misc-error "^string is read-only"))
|
||||
|
||||
(define (documented? object)
|
||||
(not (not (object-documentation object))))
|
||||
|
@ -55,7 +55,7 @@
|
|||
|
||||
(with-test-prefix "symbol->string"
|
||||
|
||||
(expect-fail-exception "result is an immutable string"
|
||||
(pass-if-exception "result is an immutable string"
|
||||
exception:immutable-string
|
||||
(string-set! (symbol->string 'abc) 1 #\space)))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue