diff options
Diffstat (limited to 'src/libs/dutil/WixToolset.DUtil/memutil.cpp')
| -rw-r--r-- | src/libs/dutil/WixToolset.DUtil/memutil.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/libs/dutil/WixToolset.DUtil/memutil.cpp b/src/libs/dutil/WixToolset.DUtil/memutil.cpp index c805a9c0..977c189e 100644 --- a/src/libs/dutil/WixToolset.DUtil/memutil.cpp +++ b/src/libs/dutil/WixToolset.DUtil/memutil.cpp | |||
| @@ -214,6 +214,27 @@ LExit: | |||
| 214 | } | 214 | } |
| 215 | 215 | ||
| 216 | 216 | ||
| 217 | extern "C" HRESULT DAPI MemEnsureArraySizeForNewItems( | ||
| 218 | __inout LPVOID* ppvArray, | ||
| 219 | __in DWORD cArray, | ||
| 220 | __in DWORD cNewItems, | ||
| 221 | __in SIZE_T cbArrayType, | ||
| 222 | __in DWORD dwGrowthCount | ||
| 223 | ) | ||
| 224 | { | ||
| 225 | HRESULT hr = S_OK; | ||
| 226 | DWORD cNew = 0; | ||
| 227 | |||
| 228 | hr = ::DWordAdd(cArray, cNewItems, &cNew); | ||
| 229 | MemExitOnFailure(hr, "Integer overflow when calculating new element count."); | ||
| 230 | |||
| 231 | hr = MemEnsureArraySize(ppvArray, cNew, cbArrayType, dwGrowthCount); | ||
| 232 | |||
| 233 | LExit: | ||
| 234 | return hr; | ||
| 235 | } | ||
| 236 | |||
| 237 | |||
| 217 | extern "C" HRESULT DAPI MemInsertIntoArray( | 238 | extern "C" HRESULT DAPI MemInsertIntoArray( |
| 218 | __deref_inout_bcount((cExistingArray + cInsertItems) * cbArrayType) LPVOID* ppvArray, | 239 | __deref_inout_bcount((cExistingArray + cInsertItems) * cbArrayType) LPVOID* ppvArray, |
| 219 | __in DWORD dwInsertIndex, | 240 | __in DWORD dwInsertIndex, |
| @@ -232,7 +253,7 @@ extern "C" HRESULT DAPI MemInsertIntoArray( | |||
| 232 | ExitFunction1(hr = S_OK); | 253 | ExitFunction1(hr = S_OK); |
| 233 | } | 254 | } |
| 234 | 255 | ||
| 235 | hr = MemEnsureArraySize(ppvArray, cExistingArray + cInsertItems, cbArrayType, dwGrowthCount); | 256 | hr = MemEnsureArraySizeForNewItems(ppvArray, cExistingArray, cInsertItems, cbArrayType, dwGrowthCount); |
| 236 | MemExitOnFailure(hr, "Failed to resize array while inserting items"); | 257 | MemExitOnFailure(hr, "Failed to resize array while inserting items"); |
| 237 | 258 | ||
| 238 | pbArray = reinterpret_cast<BYTE *>(*ppvArray); | 259 | pbArray = reinterpret_cast<BYTE *>(*ppvArray); |
