Hi,

I found something in sipgen/gencode.c (lines 4176-4209) that may be a bug: destructor call is omitted if the c++ class can't be created.

For ex., this causes memory leak:

--- c++ -----------------

class Foo {
        private:
                Foo() { }
        public:
                ~Foo() { }

                // public stuff

                friend class Bar;
};

class Bar {
        public:
                Foo getAFoo() {
                        return Foo();
                }
};

---- sip ----------------

class Foo {
        private:
                Foo();
        public:
                // public stuff
};

class Bar {
        public:
                Foo getAFoo();
};

-------------------------

Here, Bar can create a Foo. The problem is that release_Foo is generated
as an empty function. If Foo's constructor wasn't private, release_Foo calls delete correctly. Am I mistaken, or this is a bug?

Thanks,
Geza Herman

ps: this applies to version 4.4.5

_______________________________________________
PyKDE mailing list    [email protected]
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde

Reply via email to