Skip to content

Commit 2f601ff

Browse files
committed
FIX: TAKE/part of offset gob! returning contents from head of gob!
resolves: Oldes/Rebol-issues#1797
1 parent 22b8224 commit 2f601ff

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

src/core/t-gob.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ const REBCNT Gob_Flag_Words[] = {
268268
ser = Make_Block(len);
269269
ser->tail = len;
270270
val = BLK_HEAD(ser);
271-
gp = GOB_HEAD(gob);
271+
gp = GOB_SKIP(gob, index);
272272
for (; len > 0; len--, val++, gp++) {
273273
SET_GOB(val, *gp);
274274
}

src/tests/units/gob-test.r3

+28
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,34 @@ Rebol [
129129
;@@ https://github.com/Oldes/Rebol-issues/issues/1490
130130
--assert not equal? (make gob! []) (make gob! []) ; not equal by design
131131

132+
--test-- "take gob"
133+
;@@ https://github.com/Oldes/Rebol-issues/issues/1797
134+
g: make gob! []
135+
a: make gob! [text: "A"]
136+
b: make gob! [text: "B"]
137+
c: make gob! [text: "C"]
138+
clear g repend g [a b c]
139+
--assert all [
140+
1 = index? g
141+
b = take next g
142+
1 = index? g
143+
2 = length? g
144+
]
145+
--assert all [
146+
c = first take/part next g 1
147+
1 = index? g
148+
1 = length? g
149+
]
150+
--assert none? take tail g
151+
152+
clear g repend g [a b c]
153+
--assert all [
154+
(reduce [b c]) = take/part next g 10
155+
1 = index? g
156+
1 = length? g
157+
]
158+
159+
132160
===end-group===
133161

134162
~~~end-file~~~

0 commit comments

Comments
 (0)