Skip to content

Commit 3bd36d4

Browse files
committed
fix something more subtle
1 parent 6addc0a commit 3bd36d4

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/core.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,19 @@ SEXP nano_decode(unsigned char *buf, const size_t sz, const int mod, const int k
5454
PROTECT(raw = Rf_allocVector(RAWSXP, sz));
5555
cp = RAW(raw);
5656
memcpy(cp, buf, sz);
57-
data = R_tryEval(Rf_lang2(nano_UnserSymbol, raw), R_GlobalEnv, &tryErr);
57+
SEXP expr;
58+
PROTECT(expr = Rf_lang2(nano_UnserSymbol, raw));
59+
data = R_tryEval(expr, R_BaseEnv, &tryErr);
60+
UNPROTECT(1);
5861
break;
5962
case 2:
6063
PROTECT(data = Rf_allocVector(STRSXP, sz));
6164
R_xlen_t i, m, nbytes = sz, np = 0;
62-
for(i = 0, m = 0; i < sz; i++) {
65+
for (i = 0, m = 0; i < sz; i++) {
6366
SEXP onechar = rawOneString(buf, nbytes, &np);
64-
if (onechar != R_NilValue) {
65-
SET_STRING_ELT(data, i, onechar);
66-
if (Rf_xlength(onechar) > 0) m++;
67-
} else break;
67+
if (onechar == R_NilValue) break;
68+
SET_STRING_ELT(data, i, onechar);
69+
if (Rf_xlength(onechar) > 0) m++;
6870
}
6971
SETLENGTH(data, m);
7072
break;

0 commit comments

Comments
 (0)