[Kde-perl] Memory fault when inserting QTableItem into QTable
Oliver Kreuer
okreuer at PSI.de
Mon Aug 30 18:17:12 CEST 2004
Unfortunately with patch 0.5 I get the memory fault again.
And this patch doesn't include the dispose methods. Correct?
Oliver
Richard Dale wrote:
> On Monday 30 August 2004 14:46, Richard Dale wrote:
>
>>>So for me this patch (0.2) solves my problem. As far as I understood the
>>> ongoing conversation after Richards 0.2er patch this patch isn't as
>>>"stable" as one could wish.
>>
>>I've had a look at the 0.2 patch, and its got some 'random' stuff in there
>>that isn't to do with adding the dispose() method, so I would be careful
>>about using it. Here is a cleaned up version without any of the unwanted
>>'zombie' changes or anything else.
>
> Oops, the were a couple of zombie lines still left in there - here's another
> go..
>
> -- Richard
>
>
> ------------------------------------------------------------------------
>
> diff -Naur -X /home/duke/bin/patcher.exclude PerlQt/Qt.pm temp/Qt.pm
> --- PerlQt/Qt.pm 2003-09-09 03:57:11.000000000 +0100
> +++ temp/Qt.pm 2004-07-12 06:11:09.000000000 +0100
> @@ -1108,4 +1108,17 @@
> return 1
> }
>
> +sub Qt::base::dispose
> +{
> + package Qt::_internal;
> + Qt::_internal::dispose(this());
> + return;
> +}
> +
> +sub Qt::base::isDisposed
> +{
> + package Qt::_internal;
> + return Qt::_internal::isDisposed(this());
> +}
> +
> 1;
> diff -Naur -X /home/duke/bin/patcher.exclude PerlQt/Qt.xs temp/Qt.xs
> --- PerlQt/Qt.xs 2003-09-09 09:41:25.000000000 +0100
> +++ temp/Qt.xs 2004-07-12 06:11:09.000000000 +0100
> @@ -1743,6 +1743,43 @@
> delete qobj;
>
> void
> +dispose(obj)
> + SV *obj
> + CODE:
> + smokeperl_object *o = sv_obj_info(obj);
> + if(!o || !o->ptr) {
> + XSRETURN_EMPTY;
> + } else {
> + const char *className = o->smoke->classes[o->classId].className;
> + char *methodName = new char[strlen(className) + 2];
> + methodName[0] = '~';
> + strcpy(methodName + 1, className);
> + Smoke::Index nameId = o->smoke->idMethodName(methodName);
> + Smoke::Index meth = o->smoke->findMethod(o->classId, nameId);
> + if(meth > 0) {
> + Smoke::Method &m = o->smoke->methods[o->smoke->methodMaps[meth].method];
> + Smoke::ClassFn fn = o->smoke->classes[m.classId].classFn;
> + Smoke::StackItem i[1];
> + (*fn)(m.method, o->ptr, i);
> + }
> + delete[] methodName;
> + o->allocated = false;
> + }
> +
> +bool
> +isDisposed(obj)
> + SV *obj
> + CODE:
> + smokeperl_object *o = sv_obj_info(obj);
> + if(!o) {
> + RETVAL = 0;
> + } else {
> + RETVAL = 1;
> + }
> + OUTPUT:
> + RETVAL
> +
> +void
> mapObject(obj)
> SV *obj
> CODE:
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Kde-perl mailing list
> Kde-perl at kde.org
> https://mail.kde.org/mailman/listinfo/kde-perl
More information about the Kde-perl
mailing list