On Wednesday 17 of August 2016 18:18:23 Michele Calgaro wrote:
On 2016/08/17 09:00 AM, Slávek Banko wrote:
Hi all,
I noticed during current builgs, on Ubuntu 16.10 (Yakkety) and now
also on Debian 9 (Stretch) was changed the default compiler to GCC6.
This brings the number of new FTBFS. That's why I started to
concentrate on these FTBFS. Note - for this reason the packages for
Yakkety in Preliminary Stable Builds are now inconsistent.
As a first, of course, I started with tdelibs. Most were simple
conflict signed / unsigned char or int. However, one serious problem
is here.
In the 'kjs' and 'tdehtml/ecma' is used HashEntry structure that
contains the item 'value' of type short int - see 'kjs/lookup.h'.
Into this item was stored values DOM::NodeFilter::ShowCode::SHOW_ALL
= 0xFFFFFFFF (see tdehtml/dom/dom2_traversal.h) and kjs event CHANGE
with value 32768 (see tdehtml/ecma/kjs_events.cpp). Both are
therefore outside the range of short int.
Changing the type of 'value' in HashEntry from short to long would
apparently cause a change in ABI - kjs/lookup.h is part of the public
includes. That's why I made the change values 0xFFFFFFFF and 32768 to
-1. I think that GCC compilers version less than 6 will store these
values in the same way. Therefore, I believe that the proposed patch
would not cause problems == can be pushed. What is your opinion?
Cheers
I think the int/long values would simply be truncated when stored into
a short int, giving unpredictable values. Does -1 have any special
meaning when used in "value" field? If not, it should be safe to use
it.
Cheers
Michele
There is generated more hash tables where the 'value' has the meaning
specific for each table. The tables, for which two mentioned changes
concern, has no other item with the value -1. I dare to say that values
even today could not be stored as anything other than -1.
Any other ideas, suggestions, objections?
Cheers
--
Slávek