Append long lists of literal strings was doing work quadratic in the total string length.  This causes the parser to choke badly on the lists of literal strings which are used to store static icon data in some graphical applications.
Append long lists of literal strings was doing work quadratic in the
total string length.  This causes the parser to choke badly on the
lists of literal strings which are used to store static icon data in
some graphical applications.

Instead, accumulate a FIFO queue of the individual strings during
parsing.  Once we have them all, walk that list once and collect
everything into a singe StringBuffer.  Extract the final string from
that buffer when we are done.

Performance for long string lists is much improved.  Unfortunately, it
does add a bit of extra queue and buffer manipulation work to the most
common case of a single string literal.

samuelhavron/obliv-c,samuelhavron/obliv-c,samuelhavron/obliv-c,samuelhavron/obliv-c