fixes for valgrind
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7721 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
3428bf10a6
commit
07df4a57db
3 changed files with 8 additions and 7 deletions
|
|
@ -27,7 +27,7 @@
|
||||||
const char * casts1(const char *m = (const char *) NULL) {
|
const char * casts1(const char *m = (const char *) NULL) {
|
||||||
char *ret = NULL;
|
char *ret = NULL;
|
||||||
if (m) {
|
if (m) {
|
||||||
ret = new char[strlen(m+1)];
|
ret = new char[strlen(m)+1];
|
||||||
strcpy(ret, m);
|
strcpy(ret, m);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
const char * casts2(const char *m = (const char *) "Hello") {
|
const char * casts2(const char *m = (const char *) "Hello") {
|
||||||
char *ret = NULL;
|
char *ret = NULL;
|
||||||
if (m) {
|
if (m) {
|
||||||
ret = new char[strlen(m+1)];
|
ret = new char[strlen(m)+1];
|
||||||
strcpy(ret, m);
|
strcpy(ret, m);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
||||||
|
|
@ -50,10 +50,10 @@ SWIG_FromCharPtrAndSize(const char* carray, size_t size)
|
||||||
memcpy(tmp, carray, size);
|
memcpy(tmp, carray, size);
|
||||||
tmp[size] = 0;
|
tmp[size] = 0;
|
||||||
sv_setpv(obj, tmp);
|
sv_setpv(obj, tmp);
|
||||||
%delete(tmp);
|
%delete_array(tmp);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sv_setpv(obj, 0);
|
sv_setpv(obj, "");
|
||||||
}
|
}
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,12 +66,13 @@
|
||||||
%set_output(obj) %enddef
|
%set_output(obj) %enddef
|
||||||
|
|
||||||
/* variable output */
|
/* variable output */
|
||||||
%define %set_varoutput(obj) sv_setsv($result,obj) %enddef
|
%define %set_varoutput(obj) sv_setsv($result,obj); SvREFCNT_dec(obj) %enddef
|
||||||
|
|
||||||
/* constant */
|
/* constant */
|
||||||
%define %set_constant(name, obj) %begin_block
|
%define %set_constant(name, obj) %begin_block
|
||||||
SV *sv = get_sv((char*) SWIG_prefix name, TRUE | 0x2);
|
SV *sv = get_sv((char*) SWIG_prefix name, TRUE | 0x2);
|
||||||
sv_setsv(sv, obj);
|
sv_setsv(sv, obj);
|
||||||
|
SvREFCNT_dec(obj);
|
||||||
SvREADONLY_on(sv);
|
SvREADONLY_on(sv);
|
||||||
%end_block %enddef
|
%end_block %enddef
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue