Created
July 22, 2016 21:16
-
-
Save skids/8ceb56206d68341256df1e3824e4162c to your computer and use it in GitHub Desktop.
Fix for :D = Nil (untested)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/vm/moar/ops/container.c b/src/vm/moar/ops/container.c | |
index aaa7e63..b925ad6 100644 | |
--- a/src/vm/moar/ops/container.c | |
+++ b/src/vm/moar/ops/container.c | |
@@ -85,13 +85,15 @@ static void rakudo_scalar_store(MVMThreadContext *tc, MVMObject *cont, MVMObject | |
if (!obj) { | |
MVM_exception_throw_adhoc(tc, "Cannot assign a null value to a Perl 6 scalar"); | |
} | |
- else if (STABLE(obj)->WHAT == get_nil()) { | |
- obj = rcd->the_default; | |
- } | |
else { | |
+ MVMint64 mode; | |
+ if (STABLE(obj)->WHAT == get_nil()) { | |
+ obj = rcd->the_default; | |
+ /* We still have to check the_default, for :D types */ | |
+ } | |
/* Check against the type-check cache first (common, fast-path | |
* case). */ | |
- MVMint64 mode = STABLE(rcd->of)->mode_flags & MVM_TYPE_CHECK_CACHE_FLAG_MASK; | |
+ mode = STABLE(rcd->of)->mode_flags & MVM_TYPE_CHECK_CACHE_FLAG_MASK; | |
if (rcd->of != get_mu() && !MVM_6model_istype_cache_only(tc, obj, rcd->of)) { | |
/* Failed. If the cache is definitive, we certainly have an error. */ | |
if (STABLE(obj)->type_check_cache && |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment