prevents ConvertPtr to modified the result when fails

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@7757 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2005-10-31 09:41:43 +00:00
commit 1d6f737ab1

View file

@ -168,6 +168,7 @@ SWIG_Ruby_ConvertPtr(VALUE obj, void **ptr, swig_type_info *ty, int flags)
{
char *c;
swig_cast_info *tc;
void *vptr = 0;
/* Grab the pointer */
if (NIL_P(obj)) {
@ -177,7 +178,7 @@ SWIG_Ruby_ConvertPtr(VALUE obj, void **ptr, swig_type_info *ty, int flags)
if (TYPE(obj) != T_DATA) {
return SWIG_ERROR;
}
Data_Get_Struct(obj, void, *ptr);
Data_Get_Struct(obj, void, vptr);
}
@ -203,9 +204,10 @@ SWIG_Ruby_ConvertPtr(VALUE obj, void **ptr, swig_type_info *ty, int flags)
if (ty) {
if (ty->clientdata) {
if (rb_obj_is_kind_of(obj, ((swig_class *) (ty->clientdata))->klass)) {
if (*ptr == 0) {
if (vptr == 0) {
return SWIG_ERROR;
}
*ptr = vptr;
return SWIG_OK;
}
}
@ -216,7 +218,7 @@ SWIG_Ruby_ConvertPtr(VALUE obj, void **ptr, swig_type_info *ty, int flags)
if (!tc) {
return SWIG_ERROR;
}
*ptr = SWIG_TypeCast(tc, *ptr);
*ptr = SWIG_TypeCast(tc, vptr);
}
return SWIG_OK;
}