[Kde-bindings] KDE/kdebindings/php/phpqt/src

Richard Dale Richard_Dale at tipitina.demon.co.uk
Sun Jul 13 18:13:08 UTC 2008


SVN commit 831970 by rdale:

* If a method is being called on an instance which is in a different smoke module to the method,
  then cast it correctly to the type expected by the method

CCMAIL: kde-bindings at kde.org

 M  +9 -5      MethodCall.cpp  
 M  +1 -2      MethodCall.h  


--- trunk/KDE/kdebindings/php/phpqt/src/MethodCall.cpp #831969:831970
@@ -10,7 +10,7 @@
 MethodCall::MethodCall(Smoke *smoke, const Smoke::Index method, zval* target, zval ***sp, zval *&retval) :
     MethodCallBase(smoke,method,*sp),
     _target(target),
-    _current_object(0),
+    _o(0),
     _retval(retval)
     {
     if( target == 0 )
@@ -25,8 +25,7 @@
         smokephp_object *o = PHPQt::getSmokePHPObjectFromZval(_target);
         if (o && o->ptr())
         {
-            _current_object = o->mPtr();
-            _current_object_class = o->classId();
+            _o = o;
         }
     }
 
@@ -76,9 +75,14 @@
 	const Smoke::ClassFn fn = _smoke->classes[method().classId].classFn;
 
 	void *ptr = 0;
-	if( _current_object != 0 )
-		ptr = _smoke->cast(_current_object, _current_object_class, method().classId);
+	if (_o != 0) {
+		const Smoke::Class &cl = _smoke->classes[method().classId];
 
+		ptr = _o->smoke()->cast(	(void *) _o->ptr(),
+									_o->classId(),
+									_o->smoke()->idClass(cl.className, true).index );
+	}
+
 	_items = -1;
 
 	(*fn)(method().method, ptr, _stack);
--- trunk/KDE/kdebindings/php/phpqt/src/MethodCall.h #831969:831970
@@ -19,10 +19,9 @@
 
 private:
 	zval* _target;
-	void *_current_object;
-	Smoke::Index _current_object_class;
 	int _items;
 	zval *&_retval;
+	smokephp_object * _o;
 };
 
 #endif /*METHODCALL_H_*/



More information about the Kde-bindings mailing list