Use TAKE_OBJ_NOTNULL and plug minor leaks - also appeases Flexelint

parent 3084655d
...@@ -536,7 +536,7 @@ vdp_fini(struct vdp_ctx *ctx, void **priv) ...@@ -536,7 +536,7 @@ vdp_fini(struct vdp_ctx *ctx, void **priv)
AN(priv); AN(priv);
if (*priv == NULL) if (*priv == NULL)
return (0); return (0);
CAST_OBJ(state, *priv, PIPE_VDP_STATE_MAGIC); TAKE_OBJ_NOTNULL(state, priv, PIPE_VDP_STATE_MAGIC);
CHECK_OBJ_NOTNULL(state->obj, PIPE_VDP_MAGIC); CHECK_OBJ_NOTNULL(state->obj, PIPE_VDP_MAGIC);
AN(state->obj->name); AN(state->obj->name);
AN(state->obj->path); AN(state->obj->path);
...@@ -594,8 +594,11 @@ vmod_event(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e) ...@@ -594,8 +594,11 @@ vmod_event(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e)
} }
static void static void
vdp_obj_free(VRT_CTX, struct VPFX(pipe_vdp) *vdp_obj) vdp_obj_free(VRT_CTX, struct VPFX(pipe_vdp) **vdp_objp)
{ {
struct VPFX(pipe_vdp) *vdp_obj;
TAKE_OBJ_NOTNULL(vdp_obj, vdp_objp, PIPE_VDP_MAGIC);
free(vdp_obj->argv); free(vdp_obj->argv);
if (ctx != NULL && vdp_obj->vdp != NULL) if (ctx != NULL && vdp_obj->vdp != NULL)
VRT_RemoveFilter(ctx, NULL, vdp_obj->vdp); VRT_RemoveFilter(ctx, NULL, vdp_obj->vdp);
...@@ -673,7 +676,7 @@ vmod_vdp__init(VRT_CTX, struct VPFX(pipe_vdp) **vdpp, const char *obj_name, ...@@ -673,7 +676,7 @@ vmod_vdp__init(VRT_CTX, struct VPFX(pipe_vdp) **vdpp, const char *obj_name,
if (vdp == NULL) { if (vdp == NULL) {
VDPFAIL(ctx, "new %s: cannot allocate space for VDP: %s", VDPFAIL(ctx, "new %s: cannot allocate space for VDP: %s",
obj_name, VAS_errtxt(errno)); obj_name, VAS_errtxt(errno));
vdp_obj_free(NULL, vdp_obj); vdp_obj_free(NULL, &vdp_obj);
return; return;
} }
vdp->name = strdup(vdp_name); vdp->name = strdup(vdp_name);
...@@ -681,19 +684,19 @@ vmod_vdp__init(VRT_CTX, struct VPFX(pipe_vdp) **vdpp, const char *obj_name, ...@@ -681,19 +684,19 @@ vmod_vdp__init(VRT_CTX, struct VPFX(pipe_vdp) **vdpp, const char *obj_name,
vdp->bytes = vdp_bytes; vdp->bytes = vdp_bytes;
vdp->fini = vdp_fini; vdp->fini = vdp_fini;
// XXX free mem etc vdp_obj->vdp = vdp;
if (VRT_AddFilter(ctx, NULL, vdp)) { if (VRT_AddFilter(ctx, NULL, vdp)) {
vdp_obj_free(NULL, vdp_obj); vdp_obj_free(NULL, &vdp_obj);
return; return;
} }
vdp_obj->vdp = vdp;
errno = 0; errno = 0;
ALLOC_OBJ(map, PIPE_VDP_MAP_MAGIC); ALLOC_OBJ(map, PIPE_VDP_MAP_MAGIC);
if (map == NULL) { if (map == NULL) {
VDPFAIL(ctx, "new %s: cannot allocate space for map entry: %s", VDPFAIL(ctx, "new %s: cannot allocate space for map entry: %s",
obj_name, VAS_errtxt(errno)); obj_name, VAS_errtxt(errno));
vdp_obj_free(ctx, vdp_obj); vdp_obj_free(ctx, &vdp_obj);
return; return;
} }
...@@ -703,7 +706,7 @@ vmod_vdp__init(VRT_CTX, struct VPFX(pipe_vdp) **vdpp, const char *obj_name, ...@@ -703,7 +706,7 @@ vmod_vdp__init(VRT_CTX, struct VPFX(pipe_vdp) **vdpp, const char *obj_name,
VDPFAIL(ctx, "new %s: cannot allocate argv: %s", obj_name, VDPFAIL(ctx, "new %s: cannot allocate argv: %s", obj_name,
VAS_errtxt(errno)); VAS_errtxt(errno));
FREE_OBJ(map); FREE_OBJ(map);
vdp_obj_free(ctx, vdp_obj); vdp_obj_free(ctx, &vdp_obj);
return; return;
} }
vdp_obj->argv[0] = vdp_obj->path; vdp_obj->argv[0] = vdp_obj->path;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment