Skip to content

Commit 567f53f

Browse files
committed
FIX: TAKE/part on any-block! must return same type like the source is
fixes: Oldes/Rebol-issues#2174
1 parent 685a99a commit 567f53f

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/core/t-block.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -723,7 +723,7 @@ static struct {
723723

724724
// if no /part, just return value, else return block:
725725
if (!D_REF(2)) *D_RET = BLK_HEAD(ser)[index];
726-
else Set_Block(D_RET, Copy_Block_Len(ser, index, len)); // no more /DEEP
726+
else Set_Series(VAL_TYPE(value), D_RET, Copy_Block_Len(ser, index, len)); // no more /DEEP
727727
// else Set_Block(D_RET, Copy_Block_Deep(ser, index, len, D_REF(4) ? COPY_DEEP: 0));
728728
Remove_Series(ser, index, len);
729729
return R_RET;

src/tests/units/series-test.r3

+9
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,15 @@ Rebol [
179179
--assert "34" = take/part skip s 2 -5 ;@@ https://github.com/Oldes/Rebol-issues/issues/373
180180
--assert "56" = take/part s 10
181181

182+
--test-- "take/part any-block!"
183+
--assert [1 2] = take/part [1 2 3 4] 2
184+
;@@ https://github.com/Oldes/Rebol-issues/issues/2174
185+
--assert "(1 2)" = mold take/part quote (1 2 3 4) 2
186+
--assert "a/b" = mold take/part quote a/b/c 2
187+
--assert "'a/b" = mold take/part quote 'a/b/c 2
188+
--assert ":a/b" = mold take/part quote :a/b/c 2
189+
--assert "a/b:" = mold take/part quote a/b/c: 2
190+
182191
--test-- "take/last"
183192
;@@ https://github.com/Oldes/Rebol-issues/issues/177
184193
--assert #"c" = take/last str: "abc"

0 commit comments

Comments
 (0)