Skip to content

Commit 324e267

Browse files
getSizeOf: Handle long double (cppcheck-opensource#2888)
1 parent 4330a43 commit 324e267

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

lib/valueflow.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -948,6 +948,8 @@ size_t ValueFlow::getSizeOf(const ValueType &vt, const Settings *settings)
948948
return settings->sizeof_float;
949949
if (vt.type == ValueType::Type::DOUBLE)
950950
return settings->sizeof_double;
951+
if (vt.type == ValueType::Type::LONGDOUBLE)
952+
return settings->sizeof_long_double;
951953

952954
return 0;
953955
}

test/testvalueflow.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -872,23 +872,28 @@ class TestValueFlow : public TestFixture {
872872
ASSERT_EQUALS(1U, values.size());
873873
ASSERT_EQUALS(4, values.back().intvalue);
874874

875-
#define CHECK(A, B) \
875+
#define CHECK3(A, B, C) \
876876
do { \
877877
code = "void f() {\n" \
878878
" x = sizeof(" A ");\n" \
879879
"}"; \
880-
values = tokenValues(code,"( " A " )"); \
880+
values = tokenValues(code,"( " C " )"); \
881881
ASSERT_EQUALS(1U, values.size()); \
882882
ASSERT_EQUALS(B, values.back().intvalue);\
883883
} while(false)
884+
#define CHECK(A, B) CHECK3(A, B, A)
884885

885886
// standard types
886887
CHECK("void *", settings.sizeof_pointer);
887888
CHECK("char", 1U);
888889
CHECK("short", settings.sizeof_short);
889890
CHECK("int", settings.sizeof_int);
890891
CHECK("long", settings.sizeof_long);
892+
CHECK3("long long", settings.sizeof_long_long, "long");
891893
CHECK("wchar_t", settings.sizeof_wchar_t);
894+
CHECK("float", settings.sizeof_float);
895+
CHECK("double", settings.sizeof_double);
896+
CHECK3("long double", settings.sizeof_long_double, "double");
892897

893898
// string/char literals
894899
CHECK("\"asdf\"", 5);
@@ -903,6 +908,7 @@ class TestValueFlow : public TestFixture {
903908
CHECK("u'a'", 2U); // char16_t
904909
CHECK("U'a'", 4U); // char32_t
905910
#undef CHECK
911+
#undef CHECK3
906912

907913
// array size
908914
code = "void f() {\n"

0 commit comments

Comments
 (0)