diff options
author | Ricardo Wurmus <rekado@elephly.net> | 2020-05-17 11:56:01 +0200 |
---|---|---|
committer | Christine Lemmer-Webber <cwebber@dustycloud.org> | 2021-10-19 18:10:05 -0400 |
commit | 726f34b35ddd60ca18cc716621029bfb560eb50e (patch) | |
tree | 4c81f4b93ae51d9b4f44ed198c309cef05f08523 | |
parent | e38f6377e31ce584f9e88f7f5fae2f480d94a88b (diff) | |
download | guile-726f34b35ddd60ca18cc716621029bfb560eb50e.tar.gz |
loader: Handle interned constants as well as plain bytevectors.
This is a follow-up to commit b04e79283ada9a6af05552dda6446a0934c0fbe2.
* libguile/loader.c (scm_load_thunk_from_memory): Extract constants only
if the object is a pair.
(cherry picked from commit c536c297683178e6eadc0a60d1e53f8c510db3c9)
-rw-r--r-- | libguile/loader.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/libguile/loader.c b/libguile/loader.c index cf34bfc19..f9c9e45c1 100644 --- a/libguile/loader.c +++ b/libguile/loader.c @@ -598,12 +598,21 @@ SCM_DEFINE (scm_load_thunk_from_memory, "load-thunk-from-memory", 1, 0, 0, size_t len; SCM bv, constants; - SCM_VALIDATE_CONS (1, obj); - bv = scm_car (obj); - constants = scm_cdr (obj); - SCM_ASSERT (scm_is_bytevector (bv) - && (scm_is_vector (constants) || scm_is_false (constants)), - obj, 1, FUNC_NAME); + if (scm_is_pair (obj)) + { + SCM_VALIDATE_CONS (1, obj); + bv = scm_car (obj); + constants = scm_cdr (obj); + SCM_ASSERT (scm_is_bytevector (bv) + && (scm_is_vector (constants) || scm_is_false (constants)), + obj, 1, FUNC_NAME); + } + else + { + SCM_VALIDATE_BYTEVECTOR (1, obj); + bv = obj; + constants = SCM_BOOL_F; + } data = (char *) SCM_BYTEVECTOR_CONTENTS (bv); len = SCM_BYTEVECTOR_LENGTH (bv); |