tags 355090 +patch
thanks

It seems that SendDataToPanel is not really a polymorphic function but
an unrelated set of functions for which the "virtual" qualifier has been
abused.

The following patch should fix the problem for AmayaXMLPanel:

--- Amaya/thotlib/dialogue/creationmenu.c~      2006-01-13 14:02:52.000000000 
+0000
+++ Amaya/thotlib/dialogue/creationmenu.c       2006-03-04 19:26:56.000000000 
+0000
@@ -161,7 +161,7 @@
       else
         p.param3 = (void*)"";
       /* the dialog reference used to call the right callback in thotlib */
-      p.param4 = (void*)(NumFormElemToBeCreated);
+      p.param7 = NumFormElemToBeCreated;
       TtaSendDataToPanel( WXAMAYA_PANEL_XML, p );
 #endif /* _WX */
 #ifdef _WINGUI
--- Amaya/thotlib/dialogue/AmayaXMLPanel.cpp~   2006-01-10 14:18:28.000000000 
+0000
+++ Amaya/thotlib/dialogue/AmayaXMLPanel.cpp    2006-03-04 19:27:13.000000000 
+0000
@@ -99,10 +99,10 @@
   -----------------------------------------------------------------------*/
 void AmayaXMLPanel::SendDataToPanel( AmayaParams& p )
 {
-  int nb_el                 = (int)p.param1;
+  int nb_el                 = p.param1;
   const char * listBuffer   = (char *)p.param2;
   const char * currentEl    = (char *)p.param3;
-  int ref                   = (int)p.param4;;
+  int ref                   = p.param7;
   
   m_XMLRef = ref;
   
--- END

There is a similar problem with AmayaApplyClassPanel::SendDataToPanel,
which the following patch should fix:

--- Amaya/amaya/EDITstyle.c~    2006-02-08 12:22:04.000000000 +0000
+++ Amaya/amaya/EDITstyle.c     2006-03-04 20:21:09.000000000 +0000
@@ -1622,7 +1622,7 @@
       p.param1 = 0;
       p.param2 = NULL;
       p.param3 = NULL;
-      p.param4 = (void*)(BaseDialog+AClassForm); /* the dialog reference used 
to call the right callback in thotlib */
+      p.param7 = BaseDialog+AClassForm; /* the dialog reference used to call 
the right callback in thotlib */
       TtaSendDataToPanel( WXAMAYA_PANEL_APPLYCLASS, p );
 #endif /* _WX */
       return;
--- Amaya/thotlib/dialogue/AmayaApplyClassPanel.cpp~    2006-01-23 
16:30:39.000000000 +0000
+++ Amaya/thotlib/dialogue/AmayaApplyClassPanel.cpp     2006-03-04 
19:54:42.000000000 +0000
@@ -117,7 +117,7 @@
   int          nb_class = p.param1;
   const char  *listBuffer = (char *)p.param2;
   const char  *currentClass = (char *)p.param3;
-  int          ref = (long int)p.param4;
+  int          ref = p.param7;
   
   m_ApplyClassRef = ref;
   
--- END

These changes are, however, untested.

Ben.

-- 
Ben Hutchings
Humans are not rational beings; they are rationalising beings.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to