FIX #1736, and probably #2169, #2240
authorSimon Marlow <marlowsd@gmail.com>
Mon, 7 Jul 2008 09:58:36 +0000 (09:58 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Mon, 7 Jul 2008 09:58:36 +0000 (09:58 +0000)
commitb3ee146e56463e8b492bf7ba1ad95ba7d966ea8d
tree47c9bf7bdd88b949df4cbc38c695e9ef84a40e6e
parenta8cd39e47f464b88a556d026ccadbf70b09e51ed
FIX #1736, and probably #2169, #2240
appendStringBuffer was completely bogus - the arguments to copyArray
were the wrong way around, which meant that corruption was very likely
to occur by overwriting the end of the buffer in the first argument.

This definitely fixes #1736.  The other two bugs, #2169 and #2240 are
harder to reproduce, but we can see how they could occur: in the case
of #2169, the options parser is seeing the contents of an old buffer,
and in the case of #2240, appendStringBuffer is corrupting an
interface file in memory, since strng buffers and interface files are
both allocated in the pinned region of memory.
compiler/utils/StringBuffer.lhs