From: Jason Millard jsm174@gmail.com
--- dlls/vbscript/global.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-)
diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index 8c2e5b85982..319c83c66cc 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -2583,7 +2583,7 @@ static HRESULT Global_Split(BuiltinDisp *This, VARIANT *args, unsigned args_cnt, int i, *indices = NULL, *new_indices, indices_max = 8; SAFEARRAYBOUND bounds; SAFEARRAY *sa = NULL; - VARIANT *data, var; + VARIANT *data; HRESULT hres = S_OK;
TRACE("%s %u...\n", debugstr_variant(args), args_cnt); @@ -2691,19 +2691,13 @@ static HRESULT Global_Split(BuiltinDisp *This, VARIANT *args, unsigned args_cnt,
start = 0; for (i = 0; i < count; i++) { - str = SysAllocStringLen(string + start, indices[i] - start); - if (!str) { + V_VT(&data[i]) = VT_BSTR; + V_BSTR(&data[i]) = SysAllocStringLen(string + start, indices[i] - start); + + if (!V_BSTR(&data[i])) { hres = E_OUTOFMEMORY; break; } - V_VT(&var) = VT_BSTR; - V_BSTR(&var) = str; - - hres = VariantCopyInd(data+i, &var); - if(FAILED(hres)) { - SafeArrayUnaccessData(sa); - goto error; - } start = indices[i]+delimiterlen; } SafeArrayUnaccessData(sa);