From 48f26c5a67a321c61649405c1e241d4fc480cbb3 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Fri, 22 Aug 2014 15:52:05 -0700 Subject: Fix confusion between length in bytes and length in characters in app::response(). I also clean up the code while we are here, rewriting a strange switch statement and tidying whitespace. BUG=406142 R=jun_fang@foxitsoftware.com Review URL: https://codereview.chromium.org/498773004 --- fpdfsdk/src/javascript/app.cpp | 44 ++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/fpdfsdk/src/javascript/app.cpp b/fpdfsdk/src/javascript/app.cpp index c9a9ef7017..1c4da08ccb 100644 --- a/fpdfsdk/src/javascript/app.cpp +++ b/fpdfsdk/src/javascript/app.cpp @@ -1045,49 +1045,39 @@ FX_BOOL app::response(OBJ_METHOD_PARAMS) { JSObject pObj = (JSObject )params[0]; v8::Handle pValue = JS_GetObjectElement(isolate,pObj,L"cQuestion"); - swQuestion = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + swQuestion = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); pValue = JS_GetObjectElement(isolate,pObj,L"cTitle"); - swTitle = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + swTitle = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); pValue = JS_GetObjectElement(isolate,pObj,L"cDefault"); - swDefault = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + swDefault = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); pValue = JS_GetObjectElement(isolate,pObj,L"cLabel"); - swLabel = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); + swLabel = CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)).operator CFX_WideString(); pValue = JS_GetObjectElement(isolate,pObj,L"bPassword"); - bPassWord = (bool)CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)); + bPassWord = (bool)CJS_Value(isolate,pValue,GET_VALUE_TYPE(pValue)); } else { switch(iLength) { - case 1: - swQuestion = params[0]; - break; - case 2: - swQuestion = params[0]; - swTitle = params[1]; - break; + case 5: + swLabel = params[4]; + // FALLTHROUGH + case 4: + bPassWord = params[3]; + // FALLTHROUGH case 3: - swQuestion = params[0]; - swTitle = params[1]; swDefault = params[2]; - break; - case 4: - swQuestion = params[0]; + // FALLTHROUGH + case 2: swTitle = params[1]; - swDefault = params[2]; - bPassWord = params[3]; - break; - case 5: + // FALLTHROUGH + case 1: swQuestion = params[0]; - swTitle = params[1]; - swDefault = params[2]; - bPassWord = params[3]; - swLabel = params[4]; - break; + // FALLTHROUGH default: break; } @@ -1115,7 +1105,7 @@ FX_BOOL app::response(OBJ_METHOD_PARAMS) if (nLengthBytes > MAX_INPUT_BYTES) nLengthBytes = MAX_INPUT_BYTES; - vRet = CFX_WideString::FromUTF16LE((unsigned short*)pBuff, nLengthBytes); + vRet = CFX_WideString::FromUTF16LE((unsigned short*)pBuff, nLengthBytes / sizeof(unsigned short)); delete[] pBuff; return TRUE; } -- cgit v1.2.3