Avoid reuse of string buffer when concatening adjacent string litterals
In get_string_constant(), the code tried to reuse the storage for the string
but only if the expansion of the string was not bigger than its unexpanded form.
But this fail when the string constant is a sequence of adjacent string litterals
(each being possibly shared, used elsewhere, isolated or in another order).
The minimal exemple would be something like this:
#define P "\001"
const char a[] = P "a";
const char b[] = P "b";
The expansion for 'a' will produce a string which is smaller than
the unexpanded "\001" (2 instead of 4).
By trying to reuse the storage, all further occurrence of "\001"
(probably only from the same 'origin', here the macro P) will then be replaced by "\001a".
The fix is thus to not try to reuse the storage for the string if it consit of
several adjacent litterals.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>