ref: refs/heads/master
commit dba202c5024fa8c06e3f1f1fe9ffbe2d96bb4e04
Author: Klaus Kämpf
Date: Mon Mar 2 15:25:17 2009 +0100
Move owneship of char* to swig
---
bindings/relation.i | 2 +-
bindings/repo.i | 2 +-
bindings/repokey.i | 2 +-
bindings/satsolver.i | 5 +++++
bindings/solvable.i | 8 ++++++--
5 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/bindings/relation.i b/bindings/relation.i
index d826963..b76db66 100644
--- a/bindings/relation.i
+++ b/bindings/relation.i
@@ -35,7 +35,7 @@ typedef struct _Relation {} Relation;
#endif
const char *string()
- { return dep2str( $self->pool, $self->id ); }
+ { return strdup(dep2str( $self->pool, $self->id )); }
Pool *pool()
{ return $self->pool; }
diff --git a/bindings/repo.i b/bindings/repo.i
index 972d2dc..d4a06d0 100644
--- a/bindings/repo.i
+++ b/bindings/repo.i
@@ -26,7 +26,7 @@ typedef struct _Repo {} Repo;
#endif
const char *string()
{
- return $self->name;
+ return strdup($self->name);
}
/* see also count() below ! */
int size()
diff --git a/bindings/repokey.i b/bindings/repokey.i
index aa2a390..8740255 100644
--- a/bindings/repokey.i
+++ b/bindings/repokey.i
@@ -129,7 +129,7 @@ SV *
const char *string()
{
Repokey *key = xrepokey_repokey( $self );
- return my_id2str( $self->repo->pool, key->name );
+ return strdup(my_id2str( $self->repo->pool, key->name ));
}
}
diff --git a/bindings/satsolver.i b/bindings/satsolver.i
index 79b7470..857e442 100644
--- a/bindings/satsolver.i
+++ b/bindings/satsolver.i
@@ -285,6 +285,11 @@ dataiterator_value( Dataiterator *di )
%include exception.i
+%newobject string;
+%typemap(newfree) char * {
+ free($1);
+}
+
/*-------------------------------------------------------------*/
/* types and typemaps */
diff --git a/bindings/solvable.i b/bindings/solvable.i
index 11cdbb8..5c92e52 100644
--- a/bindings/solvable.i
+++ b/bindings/solvable.i
@@ -49,8 +49,12 @@ typedef struct _Solvable {} XSolvable; /* expose XSolvable as 'Solvable' */
#endif
const char *string()
{
- if ( $self->id == ID_NULL ) return "";
- return solvable2str( $self->pool, xsolvable_solvable( $self ) );
+ const char *s;
+ if ( $self->id == ID_NULL )
+ s = "";
+ else
+ s = solvable2str( $self->pool, xsolvable_solvable( $self ) );
+ return strdup(s);
}
#if defined(SWIGRUBY)
--
To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org
For additional commands, e-mail: zypp-commit+help@opensuse.org