Re: NSControls failing to set status/label on BigEndian/64bit
Wolfgang Lux <[email protected]>
| Newsgroups | gmane.comp.lib.gnustep.devel |
|---|---|
| Message-ID | <[email protected]> |
Am 07.01.2021 um 14:33 schrieb Riccardo Mottola <[email protected]>: > > Hi all, > > > Wolfgang Lux wrote: >> Yes. Changing the type you pass to the {en,de}codeValueOfObjCType methods is a, errm, not so bright idea. The types are included in the binary archives. So, trying to decode a value with a different type will give you an error (for your own safety and sanity). Trying to encode values with a different type is even worse, as you would be creating archives that cannot be read by anybody else (because they are expecting some other type). If you (have to) make such changes, be sure to introduce a new archive version and be sure to include backward compatibility code for reading the old archive format. > > I had a call with Gregory yesterday.. since this is a delciate subject I made a branch with a proposed initial change (as I have other controls failing, it will not be the conly class affected either) > > BE-64-Fixes > > What do you think? I think that introducing a new archive format to address the issue with the _highlightsByMask and _altStateMask attributes is a bit over the top. Either decoding the attributes as NSUInteger values as Fred mentioned or decoding them as unsigned int into a temporary variable and then copying the values from those temporary variable into the respective attribute would do. BTW, I don't consider the latter a hack. It's a perfectly sane solution for dealing with backward compatible archives. Wolfgang