summaryrefslogtreecommitdiff
path: root/core/fxcrt/fx_basic_util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcrt/fx_basic_util.cpp')
-rw-r--r--core/fxcrt/fx_basic_util.cpp53
1 files changed, 27 insertions, 26 deletions
diff --git a/core/fxcrt/fx_basic_util.cpp b/core/fxcrt/fx_basic_util.cpp
index 12d3aefd1c..abd84a864f 100644
--- a/core/fxcrt/fx_basic_util.cpp
+++ b/core/fxcrt/fx_basic_util.cpp
@@ -18,33 +18,34 @@
#include <cctype>
#include <memory>
-void FX_atonum(const CFX_ByteStringC& strc, FX_BOOL& bInteger, void* pData) {
- if (strc.Find('.') == -1) {
- bInteger = TRUE;
- int cc = 0;
- pdfium::base::CheckedNumeric<int> integer = 0;
- FX_STRSIZE len = strc.GetLength();
- bool bNegative = false;
- if (strc[0] == '+') {
- cc++;
- } else if (strc[0] == '-') {
- bNegative = true;
- cc++;
- }
- while (cc < len && std::isdigit(strc[cc])) {
- integer = integer * 10 + FXSYS_toDecimalDigit(strc.CharAt(cc));
- if (!integer.IsValid())
- break;
- cc++;
- }
- if (bNegative) {
- integer = -integer;
- }
- *(int*)pData = integer.ValueOrDefault(0);
- } else {
- bInteger = FALSE;
- *(FX_FLOAT*)pData = FX_atof(strc);
+bool FX_atonum(const CFX_ByteStringC& strc, void* pData) {
+ if (strc.Find('.') != -1) {
+ FX_FLOAT* pFloat = static_cast<FX_FLOAT*>(pData);
+ *pFloat = FX_atof(strc);
+ return false;
+ }
+
+ int cc = 0;
+ pdfium::base::CheckedNumeric<int> integer = 0;
+ bool bNegative = false;
+ if (strc[0] == '+') {
+ cc++;
+ } else if (strc[0] == '-') {
+ bNegative = true;
+ cc++;
}
+ while (cc < strc.GetLength() && std::isdigit(strc[cc])) {
+ integer = integer * 10 + FXSYS_toDecimalDigit(strc.CharAt(cc));
+ if (!integer.IsValid())
+ break;
+ cc++;
+ }
+ if (bNegative)
+ integer = -integer;
+
+ int* pInt = static_cast<int*>(pData);
+ *pInt = integer.ValueOrDefault(0);
+ return true;
}
static const FX_FLOAT fraction_scales[] = {