This commit is contained in:
parent
36be36d618
commit
b79646ce4c
2 changed files with 9 additions and 0 deletions
|
|
@ -380,5 +380,12 @@ namespace Swig {
|
||||||
return matches;
|
return matches;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class LocalRefGuard {
|
||||||
|
JNIEnv* jenv_;
|
||||||
|
jobject jobj_;
|
||||||
|
public:
|
||||||
|
LocalRefGuard(JNIEnv* jenv, jobject jobj): jenv_(jenv), jobj_(jobj) {}
|
||||||
|
~LocalRefGuard() { if (jobj_) jenv_->DeleteLocalRef(jobj_); }
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -405,6 +405,7 @@ SWIGINTERN const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
|
||||||
$input = JCALL1(NewStringUTF, jenv, (const char *)$1);
|
$input = JCALL1(NewStringUTF, jenv, (const char *)$1);
|
||||||
if (!$input) return $null;
|
if (!$input) return $null;
|
||||||
}
|
}
|
||||||
|
Swig::LocalRefGuard refGuard_$input(jenv, $input);
|
||||||
}
|
}
|
||||||
|
|
||||||
%typemap(freearg, noblock=1) char * { if ($1) JCALL2(ReleaseStringUTFChars, jenv, $input, (const char *)$1); }
|
%typemap(freearg, noblock=1) char * { if ($1) JCALL2(ReleaseStringUTFChars, jenv, $input, (const char *)$1); }
|
||||||
|
|
@ -731,6 +732,7 @@ SWIGINTERN const char * SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
|
||||||
$input = JCALL1(NewStringUTF, jenv, (const char *)$1);
|
$input = JCALL1(NewStringUTF, jenv, (const char *)$1);
|
||||||
if (!$input) return $null;
|
if (!$input) return $null;
|
||||||
}
|
}
|
||||||
|
Swig::LocalRefGuard refGuard_$input(jenv, $input);
|
||||||
}
|
}
|
||||||
|
|
||||||
%typemap(argout) char[ANY], char[] ""
|
%typemap(argout) char[ANY], char[] ""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue