Re: [msysGit] Re: [PATCH 01/14] Fix non-constant array creation
- From
Marius Storm-Olsen <marius@storm-olsen.com>
- Date
- Aug 21, 2009, 19:49 UTC
- Message-ID
- <4A8EFA56.6050001@gmail.com>
- In-Reply-To
- <9d6091530908210926p61aa5ea6ya6a7b71f940fdf5a@mail.gmail.com>
Janos Laube said the following on 21.08.2009 18:26:
Show 9 quoted lines
>> MSVC compiles regex.c, so it must handle it. I'm fine with that. > > msvc supports alloca, but regex.c doesn't make use of it per default > (you must define HAVE_ALLOCA_H in order to use it). basically _alloca > is fine for that task, but be aware that error handling on windows > is a bit compilicated. when _alloca fails it throws a structured > exception, you must reset the stack and use traditional memory > allocation as fallback. see > http://msdn.microsoft.com/en-us/library/wb1s57t5.aspx. :-)
I must admit that I didn't look much at the surrounding code to know how large preimage->nr can get. But assuming variable-length array is handled the same way by the compiler as alloca(), and this code seems to be performing fine, I guess it's safe to say that this code won't be triggering any SEH, and thus we won't need to handle it?
So, given my assumptions I think we can just replace that one line with alloca(), nuke the free(), and everything is ok.
-- .marius