The good news: I fixed it
The bad news:  I had to change plib  :-/

And this doesn't even come as a surprise. I had to make 
puValue::getStringValue()
in pu.h:538 virtual! The class inheritage is as follows:


  puValue()                          --> char *getStringValue();
     |
     v
 puObject()
     |
     v
 puButton()
     |
     v                ...
 puListBox()-----------|
     |
     V                       ...
  puList()--------------------|      --> virtual chjar *getStringValue();
     |
     v
AirportList()                        --> virtual chjar *getStringValue();


getString is only made virtual in puList() and AirportList(), but it's
not virtual in puObject. copy_from_pui(), however, uses the getStringValue()
method on a puObject, assuming that it will get AirportList()'s. Of course,
this doesn't work and puValue()'s is used instead. One would have to make
getStringValue virtual in puObject() or puValue() to make this work.

Why did it work before (assuming that it did :-), and doesn't now?
Probably the fact that gcc is now more standards compliant?

So, what shall we[1] do? A change to plib is probably out of the question.
Working around the problem with an subclass of puObject that does
'virtualization' right? Or removing the airport list altogether, as it's
probably only useful for people who have the whole world scenery installed?

Anyway, this should be fixed in 0.9.8.

m.



[1] If I write "we", I do actually mean "we", not "anyone *but* me" (which
    seems to be the most common interpretation these days in flightgear-devel 
;-).

_______________________________________________
Flightgear-devel mailing list
[email protected]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel
2f585eeea02e2c79d7b1d8c4963bae2d

Reply via email to