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
diff --git a/fpdfsdk/src/javascript/app.cpp b/fpdfsdk/src/javascript/app.cpp index c9a9ef7..1c4da08 100644 --- a/fpdfsdk/src/javascript/app.cpp +++ b/fpdfsdk/src/javascript/app.cpp
@@ -1045,49 +1045,39 @@ { JSObject pObj = (JSObject )params[0]; v8::Handle<v8::Value> 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 5: + swLabel = params[4]; + // FALLTHROUGH + case 4: + bPassWord = params[3]; + // FALLTHROUGH + case 3: + swDefault = params[2]; + // FALLTHROUGH + case 2: + swTitle = params[1]; + // FALLTHROUGH case 1: swQuestion = params[0]; - break; - case 2: - swQuestion = params[0]; - swTitle = params[1]; - break; - case 3: - swQuestion = params[0]; - swTitle = params[1]; - swDefault = params[2]; - break; - case 4: - swQuestion = params[0]; - swTitle = params[1]; - swDefault = params[2]; - bPassWord = params[3]; - break; - case 5: - swQuestion = params[0]; - swTitle = params[1]; - swDefault = params[2]; - bPassWord = params[3]; - swLabel = params[4]; - break; + // FALLTHROUGH default: break; } @@ -1115,7 +1105,7 @@ 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; }