From: Michael Schroeder Date: Tue, 4 Jun 2013 14:45:31 +0000 (+0200) Subject: fix a couple of leaks in the bindings X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=09292f04a8d6fefc5f9f73894023a13c0d4c8565;p=thirdparty%2Flibsolv.git fix a couple of leaks in the bindings --- diff --git a/bindings/solv.i b/bindings/solv.i index 2965ae3b..f44dcc02 100644 --- a/bindings/solv.i +++ b/bindings/solv.i @@ -1146,6 +1146,7 @@ typedef struct { Id str2id(const char *str, bool create=1) { return pool_str2id($self, str, create); } + %newobject Dep; Dep *Dep(const char *str, bool create=1) { Id id = pool_str2id($self, str, create); return new_Dep($self, id); @@ -1215,6 +1216,7 @@ typedef struct { pool_createwhatprovides($self); } + %newobject id2solvable; XSolvable *id2solvable(Id id) { return new_XSolvable($self, id); } @@ -1278,6 +1280,7 @@ typedef struct { return q; } + %newobject Job; Job *Job(int how, Id what) { return new_Job($self, how, what); } @@ -1416,6 +1419,7 @@ rb_eval_string( return repo_add_solv($self, fp, flags) == 0; } + %newobject add_solvable; XSolvable *add_solvable() { Id solvid = repo_add_solvable($self); return new_XSolvable($self->pool, solvid); @@ -1535,6 +1539,7 @@ rb_eval_string( return new_Repo_solvable_iterator($self); } + %newobject add_repodata; XRepodata *add_repodata(int flags = 0) { Repodata *rd = repo_add_repodata($self, flags); return new_XRepodata($self, rd->repodataid); @@ -1558,6 +1563,7 @@ rb_eval_string( return 0; return 1; } + %newobject first_repodata; XRepodata *first_repodata() { Repodata *data; int i; @@ -2340,8 +2346,8 @@ rb_eval_string( int solution_count() { return solver_solution_count($self->solv, $self->id); } - %newobject solutions; %typemap(out) Queue solutions Queue2Array(Solution *, 1, new_Solution(arg1, id)); + %newobject solutions; Queue solutions() { Queue q; int i, cnt; @@ -2366,8 +2372,8 @@ rb_eval_string( return solver_solutionelement_count($self->solv, $self->problemid, $self->id); } - %newobject elements; %typemap(out) Queue elements Queue2Array(Solutionelement *, 4, new_Solutionelement(arg1->solv, arg1->problemid, arg1->id, id, idp[1], idp[2], idp[3])); + %newobject elements; Queue elements(bool expandreplaces=0) { Queue q; int i, cnt; @@ -2452,8 +2458,8 @@ rb_eval_string( return pool_tmpjoin($self->solv->pool, "allow ", policy_illegal2str($self->solv, illegal, $self->solv->pool->solvables + $self->p, $self->solv->pool->solvables + $self->rp), 0); return solver_solutionelement2str($self->solv, p, rp); } - %newobject replaceelements; %typemap(out) Queue replaceelements Queue2Array(Solutionelement *, 1, new_Solutionelement(arg1->solv, arg1->problemid, arg1->solutionid, arg1->id, id, arg1->p, arg1->rp)); + %newobject replaceelements; Queue replaceelements() { Queue q; int illegal; @@ -2666,8 +2672,8 @@ rb_eval_string( return new_XSolvable($self->pool, op); } - %newobject allothersolvables; %typemap(out) Queue allothersolvables Queue2Array(XSolvable *, 1, new_XSolvable(arg1->pool, id)); + %newobject allothersolvables; Queue allothersolvables(XSolvable *s) { Queue q; queue_init(&q); @@ -2737,8 +2743,8 @@ rb_eval_string( cl->toid = toid; return cl; } - %newobject solvables; %typemap(out) Queue solvables Queue2Array(XSolvable *, 1, new_XSolvable(arg1->transaction->pool, id)); + %newobject solvables; Queue solvables() { Queue q; queue_init(&q); @@ -2764,9 +2770,16 @@ rb_eval_string( xr->id = id; return xr; } + int const type; + %{ + SWIGINTERN int XRule_type_get(XRule *xr) { + return solver_ruleclass(xr->solv, xr->id); + } + %} + %newobject info; Ruleinfo *info() { Id type, source, target, dep; - type = solver_ruleinfo($self->solv, $self->id, &source, &target, &dep); + type = solver_ruleinfo($self->solv, $self->id, &source, &target, &dep); return new_Ruleinfo($self, type, source, target, dep); } %typemap(out) Queue allinfos Queue2Array(Ruleinfo *, 4, new_Ruleinfo(arg1, id, idp[1], idp[2], idp[3])); @@ -2803,7 +2816,9 @@ rb_eval_string( ri->dep = dep; return ri; } + %newobject solvable; XSolvable * const solvable; + %newobject othersolvable; XSolvable * const othersolvable; %{ SWIGINTERN XSolvable *Ruleinfo_solvable_get(Ruleinfo *ri) {