summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2020-05-17 11:56:01 +0200
committerChristine Lemmer-Webber <cwebber@dustycloud.org>2021-10-19 18:10:05 -0400
commit726f34b35ddd60ca18cc716621029bfb560eb50e (patch)
tree4c81f4b93ae51d9b4f44ed198c309cef05f08523
parente38f6377e31ce584f9e88f7f5fae2f480d94a88b (diff)
downloadguile-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.c21
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);