I haven't had the time to work on my plugin until just a few minutes
ago, but I think that I have isolated the crash... well at least I
figured out what it is not.
Contrary to what I thought on Saturday morning, the plugin is not
crashing when I try to create the object. Instead the crash occurs
when I try to access *any* of the methods of the object. It is as if
the object is Nil, but according to REALbasic the object is *not* Nil
("If (obj Is Nil) Then"). The really bizarre thing is that
properties seem to work fine.
The only example that I have for classes is Thomas Tempelmann's
Plugin Starter. In this he uses REALbasic to create the class
structure and then uses a standard "C struct" to contain all of the
data of the class. That is the model that I am following since it
allows me to let REALbasic handle the object creation/destruction.
In every method he has the following call to an unknown (to me)
method called "ClassData()" and uses a variable that I am not
familiar with ("me"). Is this method and variable part of the
REALbasic Plugin SDK? I cannot find any reference to them in the
documentation. Here is an example of one of his methods using this
call:
static void sampleBoolRefGetter (REALobject instance, RBboolPar *value)
// returns a boolean value via a BYREF parameter
{
ClassData (sampleClass, instance, sampleClassData, me);
*value = me->aBoolean;
}
Since this works perfectly for properties, I am really confused as to
why any call to the class methods will crash.
In the crash log, the crash is because of:
-----------------------------------------------------------------
Exception: EXC_BAD_ACCESS (0x0001)
Codes: KERN_PROTECTION_FAILURE (0x0002) at 0x00000000
Thread 0 Crashed:
0 <<00000000>> 0x00000000 0 + 0
1 rbframework.dylib 0x0028e390 RuntimeMenuItemClick +
868
2 rbframework.dylib 0x0027bc74 AppCarbonEventHandler
(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 316
-----------------------------------------------------------------
Which looks to be like I am trying to access a NULL pointer. Yes, I
am calling my plugin test code from a MenuItem which is how the final
app would be used as well.
In case you need my stats:
- REALbasic 2006 r3 (release)
- REALbasic Plugin SDK packaged with 2006 r3
- CodeWarrior 9.2
- OS X 10.4.7
- Compiling plugin as Carbon with links to "CarbonLib" and
"MSL_C_Carbon.lib"
- Compiling test app in REALbasic as Mach-O to enable full support
for CrashLog
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>