Skip to content

Commit c167c29

Browse files
committed
FIX: don't allow making a module! from integer! and map!
resolves: Oldes/Rebol-issues#1551
1 parent 10932d1 commit c167c29

File tree

2 files changed

+33
-11
lines changed

2 files changed

+33
-11
lines changed

src/core/t-object.c

+15-11
Original file line numberDiff line numberDiff line change
@@ -343,20 +343,24 @@ static REBSER *Trim_Object(REBSER *obj)
343343
break; // returns value
344344
}
345345

346-
// make object! 10
347-
if (IS_NUMBER(arg)) {
348-
n = Int32s(arg, 0);
349-
obj = Make_Frame(n);
350-
break; // returns obj
351-
}
346+
// Allow only object! to be made from from map! or number! spec
347+
if (type == REB_OBJECT) {
352348

353-
// make object! map!
354-
if (IS_MAP(arg)) {
355-
obj = Map_To_Object(VAL_SERIES(arg));
356-
break; // returns obj
349+
// make object! 10
350+
if (IS_NUMBER(arg)) {
351+
n = Int32s(arg, 0);
352+
obj = Make_Frame(n);
353+
break; // returns obj
354+
}
355+
356+
// make object! map!
357+
if (IS_MAP(arg)) {
358+
obj = Map_To_Object(VAL_SERIES(arg));
359+
break; // returns obj
360+
}
357361
}
358362

359-
//if (IS_NONE(arg)) {obj = Make_Frame(0); break;}
363+
//if (IS_NONE(arg)) {obj = Make_Frame(0); break;} // removed by design!
360364

361365
Trap_Make(type, arg);
362366
}

src/tests/units/module-test.r3

+18
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,24 @@ supplement system/options/module-paths join what-dir %units/files/
116116
error? err: try [module [type: :print][]]
117117
err/id = 'wrong-type
118118
]
119+
--test-- "make module! integer!" ; not allowed
120+
;@@ https://github.com/Oldes/Rebol-issues/issues/1551
121+
--assert all [
122+
error? err: try [make module! 10]
123+
err/id = 'bad-make-arg
124+
]
125+
--test-- "make module! map!" ; not allowed
126+
;@@ https://github.com/Oldes/Rebol-issues/issues/1551
127+
--assert all [
128+
error? err: try [make module! #(a: 1)]
129+
err/id = 'bad-make-arg
130+
]
131+
--test-- "make module! object!" ; not allowed
132+
;@@ https://github.com/Oldes/Rebol-issues/issues/1551
133+
--assert all [
134+
error? err: try [make module! context [a: 1]]
135+
err/id = 'bad-make-arg
136+
]
119137

120138
===end-group===
121139

0 commit comments

Comments
 (0)