a few bug fixes
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@810 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
c1b584ccb1
commit
f19e6cc4df
2 changed files with 13 additions and 10 deletions
|
|
@ -11,12 +11,15 @@ static VALUE _cSWIG_Pointer = Qnil;
|
|||
SWIGRUNTIME(void)
|
||||
SWIG_define_class(swig_type_info *type)
|
||||
{
|
||||
VALUE klass;
|
||||
char *klass_name = ALLOCA_N(char, 4 + strlen(type->name) + 1);
|
||||
|
||||
sprintf(klass_name, "TYPE%s", type->name);
|
||||
if (NIL_P(_cSWIG_Pointer)) {
|
||||
_cSWIG_Pointer = rb_define_class_under(_mSWIG, "Pointer", rb_cObject);
|
||||
rb_undef_method(CLASS_OF(_cSWIG_Pointer), "new");
|
||||
}
|
||||
rb_define_class_under(_mSWIG, klass_name, _cSWIG_Pointer);
|
||||
klass = rb_define_class_under(_mSWIG, klass_name, _cSWIG_Pointer);
|
||||
}
|
||||
|
||||
/* Create a new pointer object */
|
||||
|
|
@ -61,11 +64,11 @@ SWIG_ConvertPtr(VALUE obj, swig_type_info *ty)
|
|||
swig_type_info *tc;
|
||||
|
||||
if ((c = SWIG_MangleStr(obj)) == NULL)
|
||||
rb_raise(rb_eTypeError, "Expected %s", ty->name);
|
||||
rb_raise(rb_eTypeError, "Expected %s", ty->str);
|
||||
Data_Get_Struct(obj, void, ptr);
|
||||
if (ty) {
|
||||
tc = SWIG_TypeCheck(c, ty);
|
||||
if (!tc) rb_raise(rb_eTypeError, "Expected %s", ty->name);
|
||||
if (!tc) rb_raise(rb_eTypeError, "Expected %s", ty->str);
|
||||
ptr = SWIG_TypeCast(tc, ptr);
|
||||
}
|
||||
return ptr;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue