Custom Member Crashes
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/11/2012 at 07:38, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 14
Platform: Mac OSX ;
Language(s) : C++ ;---------
Hallo,
I have a problem with a Tag Plugin, which is crashing if I delete an unnecessary Variable from the Header. So I came to thinking that I might be doing something that is forbidden anyway. My header looks like this:class TransferTag : public TagData
{
private:
BaseContainer ChangesBC; //unnecessary BaseContainer
CTransfer * CTrans; //custom class
Real AreaRadius;
public:
virtual Bool Init(GeListNode *node);
virtual void Free(GeListNode* node);
static NodeData *Alloc(void) { return gNew TransferTag; }
CTransfer * GetTransfer(BaseObject * Asker, Real Radius); //custom member function
};The function "GetTransfer" is called by other Plugin Objects and returns *CTrans from private. Is it allowed to do so?
Thanks
Jonnz -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/11/2012 at 10:00, xxxxxxxx wrote:
Hi Jonnz,
yes it is allowed. Have you recompiled all other files that reference your plugin? The relative
memory location of the *CTrans has changed and object files that were
compiled with previous version reference it from the wrong position. Although you are not
accessing the attribute directly, but through a function call, there may be the possibility the
compiler has inlined the function (depending on your compiler options).I currently can't think of another reason.
Best,
Niklas -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/11/2012 at 13:16, xxxxxxxx wrote:
Hi Niklas,
thanks for your help. I'm happy to know that it's allowed to do that, so I can keep working.
Since I have cleaned the project several times and checked if the compiler is inlineing the function, I guess the problem must lie somewhere else.Regards
Jonnz