… | |
… | |
283 | && SvTYPE(sv) != SVt_PVIV |
283 | && SvTYPE(sv) != SVt_PVIV |
284 | && SvTYPE(sv) != SVt_PVNV |
284 | && SvTYPE(sv) != SVt_PVNV |
285 | && SvTYPE(sv) != SVt_PVMG)) /* mstore */ |
285 | && SvTYPE(sv) != SVt_PVMG)) /* mstore */ |
286 | { |
286 | { |
287 | int deref = !SvROK (sv); |
287 | int deref = !SvROK (sv); |
|
|
288 | char *pv; |
288 | |
289 | |
289 | if (!storable_mstore) |
290 | if (!storable_mstore) |
290 | { |
291 | { |
291 | PUTBACK; |
292 | PUTBACK; |
292 | need_storable (); |
293 | need_storable (); |
… | |
… | |
304 | croak ("Storable::mstore didn't return a single scalar"); |
305 | croak ("Storable::mstore didn't return a single scalar"); |
305 | |
306 | |
306 | SPAGAIN; |
307 | SPAGAIN; |
307 | |
308 | |
308 | sv = POPs; |
309 | sv = POPs; |
|
|
310 | pv = SvPV_nolen (sv); |
309 | |
311 | |
310 | if (SvPVX (sv)[0] == MAGIC_R) |
312 | if (*pv == MAGIC_R) |
311 | { |
313 | { |
312 | if (deref) |
314 | if (deref) |
313 | SvPVX (sv)[0] = MAGIC_R_deref; |
315 | *pv = MAGIC_R_deref; |
314 | } |
316 | } |
315 | else |
317 | else |
316 | { |
318 | { |
317 | char pfx[2]; |
319 | char pfx[2]; |
318 | |
320 | |