diff options
-rw-r--r-- | BUILD.gn | 9 | ||||
-rw-r--r-- | core/fdrm/crypto/fx_crypt_sha.cpp | 218 | ||||
-rw-r--r-- | core/fpdfdoc/cpdf_formfield.cpp | 11 | ||||
-rw-r--r-- | core/fpdfdoc/cpdf_nametree.cpp | 12 | ||||
-rw-r--r-- | core/fpdfdoc/cpdf_structtree.cpp | 5 | ||||
-rw-r--r-- | core/fxcrt/bytestring.cpp | 2 | ||||
-rw-r--r-- | core/fxcrt/widestring.cpp | 16 |
7 files changed, 134 insertions, 139 deletions
@@ -285,8 +285,7 @@ visibility = [ "//:gn_visibility", ] -# TODO(crbug.com/pdfium/964): Support jumbo builds. -static_library("fdrm") { +jumbo_static_library("fdrm") { sources = [ "core/fdrm/crypto/fx_crypt.cpp", "core/fdrm/crypto/fx_crypt.h", @@ -299,8 +298,7 @@ static_library("fdrm") { ] } -# TODO(crbug.com/pdfium/964): Support jumbo builds. -static_library("fpdfdoc") { +jumbo_static_library("fpdfdoc") { sources = [ "core/fpdfdoc/cline.cpp", "core/fpdfdoc/cline.h", @@ -804,8 +802,7 @@ config("fxge_warnings") { } } -# TODO(crbug.com/pdfium/964): Support jumbo builds. -static_library("fxcrt") { +jumbo_static_library("fxcrt") { sources = [ "core/fxcrt/autorestorer.h", "core/fxcrt/bytestring.cpp", diff --git a/core/fdrm/crypto/fx_crypt_sha.cpp b/core/fdrm/crypto/fx_crypt_sha.cpp index 812700d9cd..55b885db75 100644 --- a/core/fdrm/crypto/fx_crypt_sha.cpp +++ b/core/fdrm/crypto/fx_crypt_sha.cpp @@ -8,12 +8,12 @@ #define rol(x, y) (((x) << (y)) | (((unsigned int)x) >> (32 - y))) -#define GET_UINT32(n, b, i) \ +#define SHA_GET_UINT32(n, b, i) \ { \ (n) = ((uint32_t)(b)[(i)] << 24) | ((uint32_t)(b)[(i) + 1] << 16) | \ ((uint32_t)(b)[(i) + 2] << 8) | ((uint32_t)(b)[(i) + 3]); \ } -#define PUT_UINT32(n, b, i) \ +#define SHA_PUT_UINT32(n, b, i) \ { \ (b)[(i)] = (uint8_t)((n) >> 24); \ (b)[(i) + 1] = (uint8_t)((n) >> 16); \ @@ -70,7 +70,7 @@ #define F0(x, y, z) ((x & y) | (z & (x | y))) #define F1(x, y, z) (z ^ (x & (y ^ z))) #define R(t) (W[t] = S1(W[t - 2]) + W[t - 7] + S0(W[t - 15]) + W[t - 16]) -#define P(a, b, c, d, e, f, g, h, x, K) \ +#define PS(a, b, c, d, e, f, g, h, x, K) \ { \ temp1 = h + S3(e) + F1(e, f, g) + K + x; \ temp2 = S2(a) + F0(a, b, c); \ @@ -145,96 +145,98 @@ void SHATransform(unsigned int* digest, unsigned int* block) { } void sha256_process(CRYPT_sha2_context* ctx, const uint8_t data[64]) { - uint32_t temp1, temp2, W[64]; - uint32_t A, B, C, D, E, F, G, H; - GET_UINT32(W[0], data, 0); - GET_UINT32(W[1], data, 4); - GET_UINT32(W[2], data, 8); - GET_UINT32(W[3], data, 12); - GET_UINT32(W[4], data, 16); - GET_UINT32(W[5], data, 20); - GET_UINT32(W[6], data, 24); - GET_UINT32(W[7], data, 28); - GET_UINT32(W[8], data, 32); - GET_UINT32(W[9], data, 36); - GET_UINT32(W[10], data, 40); - GET_UINT32(W[11], data, 44); - GET_UINT32(W[12], data, 48); - GET_UINT32(W[13], data, 52); - GET_UINT32(W[14], data, 56); - GET_UINT32(W[15], data, 60); - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; - E = ctx->state[4]; - F = ctx->state[5]; - G = ctx->state[6]; - H = ctx->state[7]; - P(A, B, C, D, E, F, G, H, W[0], 0x428A2F98); - P(H, A, B, C, D, E, F, G, W[1], 0x71374491); - P(G, H, A, B, C, D, E, F, W[2], 0xB5C0FBCF); - P(F, G, H, A, B, C, D, E, W[3], 0xE9B5DBA5); - P(E, F, G, H, A, B, C, D, W[4], 0x3956C25B); - P(D, E, F, G, H, A, B, C, W[5], 0x59F111F1); - P(C, D, E, F, G, H, A, B, W[6], 0x923F82A4); - P(B, C, D, E, F, G, H, A, W[7], 0xAB1C5ED5); - P(A, B, C, D, E, F, G, H, W[8], 0xD807AA98); - P(H, A, B, C, D, E, F, G, W[9], 0x12835B01); - P(G, H, A, B, C, D, E, F, W[10], 0x243185BE); - P(F, G, H, A, B, C, D, E, W[11], 0x550C7DC3); - P(E, F, G, H, A, B, C, D, W[12], 0x72BE5D74); - P(D, E, F, G, H, A, B, C, W[13], 0x80DEB1FE); - P(C, D, E, F, G, H, A, B, W[14], 0x9BDC06A7); - P(B, C, D, E, F, G, H, A, W[15], 0xC19BF174); - P(A, B, C, D, E, F, G, H, R(16), 0xE49B69C1); - P(H, A, B, C, D, E, F, G, R(17), 0xEFBE4786); - P(G, H, A, B, C, D, E, F, R(18), 0x0FC19DC6); - P(F, G, H, A, B, C, D, E, R(19), 0x240CA1CC); - P(E, F, G, H, A, B, C, D, R(20), 0x2DE92C6F); - P(D, E, F, G, H, A, B, C, R(21), 0x4A7484AA); - P(C, D, E, F, G, H, A, B, R(22), 0x5CB0A9DC); - P(B, C, D, E, F, G, H, A, R(23), 0x76F988DA); - P(A, B, C, D, E, F, G, H, R(24), 0x983E5152); - P(H, A, B, C, D, E, F, G, R(25), 0xA831C66D); - P(G, H, A, B, C, D, E, F, R(26), 0xB00327C8); - P(F, G, H, A, B, C, D, E, R(27), 0xBF597FC7); - P(E, F, G, H, A, B, C, D, R(28), 0xC6E00BF3); - P(D, E, F, G, H, A, B, C, R(29), 0xD5A79147); - P(C, D, E, F, G, H, A, B, R(30), 0x06CA6351); - P(B, C, D, E, F, G, H, A, R(31), 0x14292967); - P(A, B, C, D, E, F, G, H, R(32), 0x27B70A85); - P(H, A, B, C, D, E, F, G, R(33), 0x2E1B2138); - P(G, H, A, B, C, D, E, F, R(34), 0x4D2C6DFC); - P(F, G, H, A, B, C, D, E, R(35), 0x53380D13); - P(E, F, G, H, A, B, C, D, R(36), 0x650A7354); - P(D, E, F, G, H, A, B, C, R(37), 0x766A0ABB); - P(C, D, E, F, G, H, A, B, R(38), 0x81C2C92E); - P(B, C, D, E, F, G, H, A, R(39), 0x92722C85); - P(A, B, C, D, E, F, G, H, R(40), 0xA2BFE8A1); - P(H, A, B, C, D, E, F, G, R(41), 0xA81A664B); - P(G, H, A, B, C, D, E, F, R(42), 0xC24B8B70); - P(F, G, H, A, B, C, D, E, R(43), 0xC76C51A3); - P(E, F, G, H, A, B, C, D, R(44), 0xD192E819); - P(D, E, F, G, H, A, B, C, R(45), 0xD6990624); - P(C, D, E, F, G, H, A, B, R(46), 0xF40E3585); - P(B, C, D, E, F, G, H, A, R(47), 0x106AA070); - P(A, B, C, D, E, F, G, H, R(48), 0x19A4C116); - P(H, A, B, C, D, E, F, G, R(49), 0x1E376C08); - P(G, H, A, B, C, D, E, F, R(50), 0x2748774C); - P(F, G, H, A, B, C, D, E, R(51), 0x34B0BCB5); - P(E, F, G, H, A, B, C, D, R(52), 0x391C0CB3); - P(D, E, F, G, H, A, B, C, R(53), 0x4ED8AA4A); - P(C, D, E, F, G, H, A, B, R(54), 0x5B9CCA4F); - P(B, C, D, E, F, G, H, A, R(55), 0x682E6FF3); - P(A, B, C, D, E, F, G, H, R(56), 0x748F82EE); - P(H, A, B, C, D, E, F, G, R(57), 0x78A5636F); - P(G, H, A, B, C, D, E, F, R(58), 0x84C87814); - P(F, G, H, A, B, C, D, E, R(59), 0x8CC70208); - P(E, F, G, H, A, B, C, D, R(60), 0x90BEFFFA); - P(D, E, F, G, H, A, B, C, R(61), 0xA4506CEB); - P(C, D, E, F, G, H, A, B, R(62), 0xBEF9A3F7); - P(B, C, D, E, F, G, H, A, R(63), 0xC67178F2); + uint32_t W[64]; + SHA_GET_UINT32(W[0], data, 0); + SHA_GET_UINT32(W[1], data, 4); + SHA_GET_UINT32(W[2], data, 8); + SHA_GET_UINT32(W[3], data, 12); + SHA_GET_UINT32(W[4], data, 16); + SHA_GET_UINT32(W[5], data, 20); + SHA_GET_UINT32(W[6], data, 24); + SHA_GET_UINT32(W[7], data, 28); + SHA_GET_UINT32(W[8], data, 32); + SHA_GET_UINT32(W[9], data, 36); + SHA_GET_UINT32(W[10], data, 40); + SHA_GET_UINT32(W[11], data, 44); + SHA_GET_UINT32(W[12], data, 48); + SHA_GET_UINT32(W[13], data, 52); + SHA_GET_UINT32(W[14], data, 56); + SHA_GET_UINT32(W[15], data, 60); + + uint32_t temp1; + uint32_t temp2; + uint32_t A = ctx->state[0]; + uint32_t B = ctx->state[1]; + uint32_t C = ctx->state[2]; + uint32_t D = ctx->state[3]; + uint32_t E = ctx->state[4]; + uint32_t F = ctx->state[5]; + uint32_t G = ctx->state[6]; + uint32_t H = ctx->state[7]; + PS(A, B, C, D, E, F, G, H, W[0], 0x428A2F98); + PS(H, A, B, C, D, E, F, G, W[1], 0x71374491); + PS(G, H, A, B, C, D, E, F, W[2], 0xB5C0FBCF); + PS(F, G, H, A, B, C, D, E, W[3], 0xE9B5DBA5); + PS(E, F, G, H, A, B, C, D, W[4], 0x3956C25B); + PS(D, E, F, G, H, A, B, C, W[5], 0x59F111F1); + PS(C, D, E, F, G, H, A, B, W[6], 0x923F82A4); + PS(B, C, D, E, F, G, H, A, W[7], 0xAB1C5ED5); + PS(A, B, C, D, E, F, G, H, W[8], 0xD807AA98); + PS(H, A, B, C, D, E, F, G, W[9], 0x12835B01); + PS(G, H, A, B, C, D, E, F, W[10], 0x243185BE); + PS(F, G, H, A, B, C, D, E, W[11], 0x550C7DC3); + PS(E, F, G, H, A, B, C, D, W[12], 0x72BE5D74); + PS(D, E, F, G, H, A, B, C, W[13], 0x80DEB1FE); + PS(C, D, E, F, G, H, A, B, W[14], 0x9BDC06A7); + PS(B, C, D, E, F, G, H, A, W[15], 0xC19BF174); + PS(A, B, C, D, E, F, G, H, R(16), 0xE49B69C1); + PS(H, A, B, C, D, E, F, G, R(17), 0xEFBE4786); + PS(G, H, A, B, C, D, E, F, R(18), 0x0FC19DC6); + PS(F, G, H, A, B, C, D, E, R(19), 0x240CA1CC); + PS(E, F, G, H, A, B, C, D, R(20), 0x2DE92C6F); + PS(D, E, F, G, H, A, B, C, R(21), 0x4A7484AA); + PS(C, D, E, F, G, H, A, B, R(22), 0x5CB0A9DC); + PS(B, C, D, E, F, G, H, A, R(23), 0x76F988DA); + PS(A, B, C, D, E, F, G, H, R(24), 0x983E5152); + PS(H, A, B, C, D, E, F, G, R(25), 0xA831C66D); + PS(G, H, A, B, C, D, E, F, R(26), 0xB00327C8); + PS(F, G, H, A, B, C, D, E, R(27), 0xBF597FC7); + PS(E, F, G, H, A, B, C, D, R(28), 0xC6E00BF3); + PS(D, E, F, G, H, A, B, C, R(29), 0xD5A79147); + PS(C, D, E, F, G, H, A, B, R(30), 0x06CA6351); + PS(B, C, D, E, F, G, H, A, R(31), 0x14292967); + PS(A, B, C, D, E, F, G, H, R(32), 0x27B70A85); + PS(H, A, B, C, D, E, F, G, R(33), 0x2E1B2138); + PS(G, H, A, B, C, D, E, F, R(34), 0x4D2C6DFC); + PS(F, G, H, A, B, C, D, E, R(35), 0x53380D13); + PS(E, F, G, H, A, B, C, D, R(36), 0x650A7354); + PS(D, E, F, G, H, A, B, C, R(37), 0x766A0ABB); + PS(C, D, E, F, G, H, A, B, R(38), 0x81C2C92E); + PS(B, C, D, E, F, G, H, A, R(39), 0x92722C85); + PS(A, B, C, D, E, F, G, H, R(40), 0xA2BFE8A1); + PS(H, A, B, C, D, E, F, G, R(41), 0xA81A664B); + PS(G, H, A, B, C, D, E, F, R(42), 0xC24B8B70); + PS(F, G, H, A, B, C, D, E, R(43), 0xC76C51A3); + PS(E, F, G, H, A, B, C, D, R(44), 0xD192E819); + PS(D, E, F, G, H, A, B, C, R(45), 0xD6990624); + PS(C, D, E, F, G, H, A, B, R(46), 0xF40E3585); + PS(B, C, D, E, F, G, H, A, R(47), 0x106AA070); + PS(A, B, C, D, E, F, G, H, R(48), 0x19A4C116); + PS(H, A, B, C, D, E, F, G, R(49), 0x1E376C08); + PS(G, H, A, B, C, D, E, F, R(50), 0x2748774C); + PS(F, G, H, A, B, C, D, E, R(51), 0x34B0BCB5); + PS(E, F, G, H, A, B, C, D, R(52), 0x391C0CB3); + PS(D, E, F, G, H, A, B, C, R(53), 0x4ED8AA4A); + PS(C, D, E, F, G, H, A, B, R(54), 0x5B9CCA4F); + PS(B, C, D, E, F, G, H, A, R(55), 0x682E6FF3); + PS(A, B, C, D, E, F, G, H, R(56), 0x748F82EE); + PS(H, A, B, C, D, E, F, G, R(57), 0x78A5636F); + PS(G, H, A, B, C, D, E, F, R(58), 0x84C87814); + PS(F, G, H, A, B, C, D, E, R(59), 0x8CC70208); + PS(E, F, G, H, A, B, C, D, R(60), 0x90BEFFFA); + PS(D, E, F, G, H, A, B, C, R(61), 0xA4506CEB); + PS(C, D, E, F, G, H, A, B, R(62), 0xBEF9A3F7); + PS(B, C, D, E, F, G, H, A, R(63), 0xC67178F2); ctx->state[0] += A; ctx->state[1] += B; ctx->state[2] += C; @@ -479,25 +481,23 @@ void CRYPT_SHA256Update(CRYPT_sha2_context* ctx, } void CRYPT_SHA256Finish(CRYPT_sha2_context* ctx, uint8_t digest[32]) { - uint32_t last, padn; - uint32_t high, low; uint8_t msglen[8]; - high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); - low = (ctx->total[0] << 3); - PUT_UINT32(high, msglen, 0); - PUT_UINT32(low, msglen, 4); - last = ctx->total[0] & 0x3F; - padn = (last < 56) ? (56 - last) : (120 - last); + uint32_t high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); + uint32_t low = (ctx->total[0] << 3); + SHA_PUT_UINT32(high, msglen, 0); + SHA_PUT_UINT32(low, msglen, 4); + uint32_t last = ctx->total[0] & 0x3F; + uint32_t padn = (last < 56) ? (56 - last) : (120 - last); CRYPT_SHA256Update(ctx, sha256_padding, padn); CRYPT_SHA256Update(ctx, msglen, 8); - PUT_UINT32(ctx->state[0], digest, 0); - PUT_UINT32(ctx->state[1], digest, 4); - PUT_UINT32(ctx->state[2], digest, 8); - PUT_UINT32(ctx->state[3], digest, 12); - PUT_UINT32(ctx->state[4], digest, 16); - PUT_UINT32(ctx->state[5], digest, 20); - PUT_UINT32(ctx->state[6], digest, 24); - PUT_UINT32(ctx->state[7], digest, 28); + SHA_PUT_UINT32(ctx->state[0], digest, 0); + SHA_PUT_UINT32(ctx->state[1], digest, 4); + SHA_PUT_UINT32(ctx->state[2], digest, 8); + SHA_PUT_UINT32(ctx->state[3], digest, 12); + SHA_PUT_UINT32(ctx->state[4], digest, 16); + SHA_PUT_UINT32(ctx->state[5], digest, 20); + SHA_PUT_UINT32(ctx->state[6], digest, 24); + SHA_PUT_UINT32(ctx->state[7], digest, 28); } void CRYPT_SHA256Generate(const uint8_t* data, diff --git a/core/fpdfdoc/cpdf_formfield.cpp b/core/fpdfdoc/cpdf_formfield.cpp index 395b5c5713..2502fe6faa 100644 --- a/core/fpdfdoc/cpdf_formfield.cpp +++ b/core/fpdfdoc/cpdf_formfield.cpp @@ -25,8 +25,6 @@ namespace { -const int kMaxRecursion = 32; - const int kFormListMultiSelect = 0x100; const int kFormComboEdit = 0x100; @@ -50,9 +48,8 @@ bool IsUnison(CPDF_FormField* pField) { CPDF_Object* FPDF_GetFieldAttr(const CPDF_Dictionary* pFieldDict, const char* name, int nLevel) { - if (nLevel > kMaxRecursion) - return nullptr; - if (!pFieldDict) + static constexpr int kGetFieldMaxRecursion = 32; + if (!pFieldDict || nLevel > kGetFieldMaxRecursion) return nullptr; CPDF_Object* pAttr = pFieldDict->GetDirectObjectFor(name); @@ -60,9 +57,7 @@ CPDF_Object* FPDF_GetFieldAttr(const CPDF_Dictionary* pFieldDict, return pAttr; CPDF_Dictionary* pParent = pFieldDict->GetDictFor("Parent"); - if (!pParent) - return nullptr; - return FPDF_GetFieldAttr(pParent, name, nLevel + 1); + return pParent ? FPDF_GetFieldAttr(pParent, name, nLevel + 1) : nullptr; } WideString FPDF_GetFullName(CPDF_Dictionary* pFieldDict) { diff --git a/core/fpdfdoc/cpdf_nametree.cpp b/core/fpdfdoc/cpdf_nametree.cpp index 631571c9e4..3c5b08db21 100644 --- a/core/fpdfdoc/cpdf_nametree.cpp +++ b/core/fpdfdoc/cpdf_nametree.cpp @@ -17,7 +17,7 @@ namespace { -const int nMaxRecursion = 32; +constexpr int kNameTreeMaxRecursion = 32; std::pair<WideString, WideString> GetNodeLimitsMaybeSwap(CPDF_Array* pLimits) { ASSERT(pLimits); @@ -40,7 +40,7 @@ bool GetNodeAncestorsLimits(const CPDF_Dictionary* pNode, const CPDF_Array* pFind, int nLevel, std::vector<CPDF_Array*>* pLimits) { - if (nLevel > nMaxRecursion) + if (nLevel > kNameTreeMaxRecursion) return false; if (pNode->GetArrayFor("Names") == pFind) { @@ -72,7 +72,7 @@ bool UpdateNodesAndLimitsUponDeletion(CPDF_Dictionary* pNode, const CPDF_Array* pFind, const WideString& csName, int nLevel) { - if (nLevel > nMaxRecursion) + if (nLevel > kNameTreeMaxRecursion) return false; CPDF_Array* pLimits = pNode->GetArrayFor("Limits"); @@ -159,7 +159,7 @@ CPDF_Object* SearchNameNodeByName(const CPDF_Dictionary* pNode, size_t* nIndex, CPDF_Array** ppFind, int* pFindIndex) { - if (nLevel > nMaxRecursion) + if (nLevel > kNameTreeMaxRecursion) return nullptr; CPDF_Array* pLimits = pNode->GetArrayFor("Limits"); @@ -235,7 +235,7 @@ CPDF_Object* SearchNameNodeByIndex(const CPDF_Dictionary* pNode, WideString* csName, CPDF_Array** ppFind, int* pFindIndex) { - if (nLevel > nMaxRecursion) + if (nLevel > kNameTreeMaxRecursion) return nullptr; CPDF_Array* pNames = pNode->GetArrayFor("Names"); @@ -272,7 +272,7 @@ CPDF_Object* SearchNameNodeByIndex(const CPDF_Dictionary* pNode, // Get the total number of key-value pairs in the tree with root |pNode|. size_t CountNamesInternal(CPDF_Dictionary* pNode, int nLevel) { - if (nLevel > nMaxRecursion) + if (nLevel > kNameTreeMaxRecursion) return 0; CPDF_Array* pNames = pNode->GetArrayFor("Names"); diff --git a/core/fpdfdoc/cpdf_structtree.cpp b/core/fpdfdoc/cpdf_structtree.cpp index 48b83f555c..97db691425 100644 --- a/core/fpdfdoc/cpdf_structtree.cpp +++ b/core/fpdfdoc/cpdf_structtree.cpp @@ -15,8 +15,6 @@ namespace { -const int nMaxRecursion = 32; - bool IsTagged(const CPDF_Document* pDoc) { const CPDF_Dictionary* pCatalog = pDoc->GetRoot(); const CPDF_Dictionary* pMarkInfo = pCatalog->GetDictFor("MarkInfo"); @@ -87,7 +85,8 @@ RetainPtr<CPDF_StructElement> CPDF_StructTree::AddPageNode( CPDF_Dictionary* pDict, std::map<CPDF_Dictionary*, RetainPtr<CPDF_StructElement>>* map, int nLevel) { - if (nLevel > nMaxRecursion) + static constexpr int kStructTreeMaxRecursion = 32; + if (nLevel > kStructTreeMaxRecursion) return nullptr; auto it = map->find(pDict); diff --git a/core/fxcrt/bytestring.cpp b/core/fxcrt/bytestring.cpp index 3e4861ae60..2ab1379974 100644 --- a/core/fxcrt/bytestring.cpp +++ b/core/fxcrt/bytestring.cpp @@ -69,7 +69,9 @@ bool IsValidCodePage(uint16_t codepage) { #endif ByteString GetByteString(uint16_t codepage, const WideStringView& wstr) { +#ifndef NDEBUG ASSERT(IsValidCodePage(codepage)); +#endif int src_len = wstr.GetLength(); int dest_len = diff --git a/core/fxcrt/widestring.cpp b/core/fxcrt/widestring.cpp index 158c67409b..8d47564e13 100644 --- a/core/fxcrt/widestring.cpp +++ b/core/fxcrt/widestring.cpp @@ -31,7 +31,7 @@ template struct std::hash<WideString>; namespace { -constexpr wchar_t kTrimChars[] = L"\x09\x0a\x0b\x0c\x0d\x20"; +constexpr wchar_t kWideTrimChars[] = L"\x09\x0a\x0b\x0c\x0d\x20"; const wchar_t* FX_wcsstr(const wchar_t* haystack, int haystack_len, @@ -273,7 +273,7 @@ Optional<WideString> TryVSWPrintf(size_t size, } #ifndef NDEBUG -bool IsValidCodePage(uint16_t codepage) { +bool IsValidWideCodePage(uint16_t codepage) { switch (codepage) { case FX_CODEPAGE_DefANSI: case FX_CODEPAGE_ShiftJIS: @@ -288,7 +288,9 @@ bool IsValidCodePage(uint16_t codepage) { #endif WideString GetWideString(uint16_t codepage, const ByteStringView& bstr) { - ASSERT(IsValidCodePage(codepage)); +#ifndef NDEBUG + ASSERT(IsValidWideCodePage(codepage)); +#endif int src_len = bstr.GetLength(); int dest_len = FXSYS_MultiByteToWideChar( @@ -940,8 +942,8 @@ size_t WideString::WStringLength(const unsigned short* str) { } void WideString::Trim() { - TrimRight(kTrimChars); - TrimLeft(kTrimChars); + TrimRight(kWideTrimChars); + TrimLeft(kWideTrimChars); } void WideString::Trim(wchar_t target) { @@ -956,7 +958,7 @@ void WideString::Trim(const WideStringView& targets) { } void WideString::TrimLeft() { - TrimLeft(kTrimChars); + TrimLeft(kWideTrimChars); } void WideString::TrimLeft(wchar_t target) { @@ -994,7 +996,7 @@ void WideString::TrimLeft(const WideStringView& targets) { } void WideString::TrimRight() { - TrimRight(kTrimChars); + TrimRight(kWideTrimChars); } void WideString::TrimRight(wchar_t target) { |