From ba93485c940b0bae6e0b6a005fdd1819652f3984 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 4 Apr 2024 15:41:57 -0700 Subject: 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 --- src/api/burn/balutil/BalBootstrapperEngine.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/api/burn/balutil/BalBootstrapperEngine.cpp') 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 if (wzValue) { hr = ::StringCchCopyW(wzValue, *pcchValue, results.wzValue); + if (E_INSUFFICIENT_BUFFER == hr) + { + hr = E_MOREDATA; + } } else if (results.cchValue) { @@ -292,6 +296,10 @@ public: // IBootstrapperEngine if (wzValue) { hr = ::StringCchCopyW(wzValue, *pcchValue, results.wzValue); + if (E_INSUFFICIENT_BUFFER == hr) + { + hr = E_MOREDATA; + } } else if (results.cchValue) { @@ -373,6 +381,10 @@ public: // IBootstrapperEngine if (wzValue) { hr = ::StringCchCopyW(wzValue, *pcchValue, results.wzValue); + if (E_INSUFFICIENT_BUFFER == hr) + { + hr = E_MOREDATA; + } } else if (results.cchValue) { @@ -449,6 +461,10 @@ public: // IBootstrapperEngine if (wzOut) { hr = ::StringCchCopyW(wzOut, *pcchOut, results.wzOut); + if (E_INSUFFICIENT_BUFFER == hr) + { + hr = E_MOREDATA; + } } else if (results.cchOut) { @@ -525,6 +541,10 @@ public: // IBootstrapperEngine if (wzOut) { hr = ::StringCchCopyW(wzOut, *pcchOut, results.wzOut); + if (E_INSUFFICIENT_BUFFER == hr) + { + hr = E_MOREDATA; + } } else if (results.cchOut) { -- cgit v1.2.3-55-g6feb