JS_XDRMemGetData(JSXDRState *xdr, uint32 *lp) { if (xdr->ops != &xdrmem_ops) return NULL; *lp = MEM_COUNT(xdr); return MEM_BASE(xdr); }
JS_XDRMemSetData(JSXDRState *xdr, void *data, uint32 len) { if (xdr->ops != &xdrmem_ops) return; MEM_LIMIT(xdr) = len; MEM_BASE(xdr) = data; MEM_COUNT(xdr) = 0; }
JS_XDRNewMem(JSContext *cx, JSXDRMode mode) { JSXDRState *xdr = (JSXDRState *) JS_malloc(cx, sizeof(JSXDRMemState)); if (!xdr) return NULL; JS_XDRInitBase(xdr, mode, cx); if (mode == JSXDR_ENCODE) { if (!(MEM_BASE(xdr) = JS_malloc(cx, MEM_BLOCK))) { JS_free(cx, xdr); return NULL; } } else { /* XXXbe ok, so better not deref MEM_BASE(xdr) if not ENCODE */ MEM_BASE(xdr) = NULL; } xdr->ops = &xdrmem_ops; MEM_COUNT(xdr) = 0; MEM_LIMIT(xdr) = MEM_BLOCK; return xdr; }
static void mem_finalize(JSXDRState *xdr) { JS_free(xdr->cx, MEM_BASE(xdr)); }
static void mem_finalize(JSXDRState *xdr) { xdr->cx->free(MEM_BASE(xdr)); }