diff options
| author | Rob Mensching <rob@firegiant.com> | 2024-04-04 15:41:57 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2024-04-04 16:33:49 -0700 |
| commit | ba93485c940b0bae6e0b6a005fdd1819652f3984 (patch) | |
| tree | f887f83dc535fc108e399e0f2a886beb71945bde /src/api/burn/balutil/BalBootstrapperEngine.cpp | |
| parent | f9ae2561ac4a39ba810234db3b562ca2898ccaf4 (diff) | |
| download | wix-ba93485c940b0bae6e0b6a005fdd1819652f3984.tar.gz wix-ba93485c940b0bae6e0b6a005fdd1819652f3984.tar.bz2 wix-ba93485c940b0bae6e0b6a005fdd1819652f3984.zip | |
Report E_MOREDATA from Bal functions when string buffer too small
WiX v4 (and probably v3) standardized on the error code E_MOREDATA when string
buffers were too small instead of E_INSUFFICIIENT_BUFFER. This fixes v5 to
match in a few missing cases.
Fixes 8094
Diffstat (limited to 'src/api/burn/balutil/BalBootstrapperEngine.cpp')
| -rw-r--r-- | src/api/burn/balutil/BalBootstrapperEngine.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/api/burn/balutil/BalBootstrapperEngine.cpp b/src/api/burn/balutil/BalBootstrapperEngine.cpp index b924906e..28608cb9 100644 --- a/src/api/burn/balutil/BalBootstrapperEngine.cpp +++ b/src/api/burn/balutil/BalBootstrapperEngine.cpp | |||
| @@ -216,6 +216,10 @@ public: // IBootstrapperEngine | |||
| 216 | if (wzValue) | 216 | if (wzValue) |
| 217 | { | 217 | { |
| 218 | hr = ::StringCchCopyW(wzValue, *pcchValue, results.wzValue); | 218 | hr = ::StringCchCopyW(wzValue, *pcchValue, results.wzValue); |
| 219 | if (E_INSUFFICIENT_BUFFER == hr) | ||
| 220 | { | ||
| 221 | hr = E_MOREDATA; | ||
| 222 | } | ||
| 219 | } | 223 | } |
| 220 | else if (results.cchValue) | 224 | else if (results.cchValue) |
| 221 | { | 225 | { |
| @@ -292,6 +296,10 @@ public: // IBootstrapperEngine | |||
| 292 | if (wzValue) | 296 | if (wzValue) |
| 293 | { | 297 | { |
| 294 | hr = ::StringCchCopyW(wzValue, *pcchValue, results.wzValue); | 298 | hr = ::StringCchCopyW(wzValue, *pcchValue, results.wzValue); |
| 299 | if (E_INSUFFICIENT_BUFFER == hr) | ||
| 300 | { | ||
| 301 | hr = E_MOREDATA; | ||
| 302 | } | ||
| 295 | } | 303 | } |
| 296 | else if (results.cchValue) | 304 | else if (results.cchValue) |
| 297 | { | 305 | { |
| @@ -373,6 +381,10 @@ public: // IBootstrapperEngine | |||
| 373 | if (wzValue) | 381 | if (wzValue) |
| 374 | { | 382 | { |
| 375 | hr = ::StringCchCopyW(wzValue, *pcchValue, results.wzValue); | 383 | hr = ::StringCchCopyW(wzValue, *pcchValue, results.wzValue); |
| 384 | if (E_INSUFFICIENT_BUFFER == hr) | ||
| 385 | { | ||
| 386 | hr = E_MOREDATA; | ||
| 387 | } | ||
| 376 | } | 388 | } |
| 377 | else if (results.cchValue) | 389 | else if (results.cchValue) |
| 378 | { | 390 | { |
| @@ -449,6 +461,10 @@ public: // IBootstrapperEngine | |||
| 449 | if (wzOut) | 461 | if (wzOut) |
| 450 | { | 462 | { |
| 451 | hr = ::StringCchCopyW(wzOut, *pcchOut, results.wzOut); | 463 | hr = ::StringCchCopyW(wzOut, *pcchOut, results.wzOut); |
| 464 | if (E_INSUFFICIENT_BUFFER == hr) | ||
| 465 | { | ||
| 466 | hr = E_MOREDATA; | ||
| 467 | } | ||
| 452 | } | 468 | } |
| 453 | else if (results.cchOut) | 469 | else if (results.cchOut) |
| 454 | { | 470 | { |
| @@ -525,6 +541,10 @@ public: // IBootstrapperEngine | |||
| 525 | if (wzOut) | 541 | if (wzOut) |
| 526 | { | 542 | { |
| 527 | hr = ::StringCchCopyW(wzOut, *pcchOut, results.wzOut); | 543 | hr = ::StringCchCopyW(wzOut, *pcchOut, results.wzOut); |
| 544 | if (E_INSUFFICIENT_BUFFER == hr) | ||
| 545 | { | ||
| 546 | hr = E_MOREDATA; | ||
| 547 | } | ||
| 528 | } | 548 | } |
| 529 | else if (results.cchOut) | 549 | else if (results.cchOut) |
| 530 | { | 550 | { |
