Fix test array_index_24() to share code with environments where plain char is either signed or unsigned.
This was done, because that particular test has been already fixed a couple of times and it is still broken in some systems.
This commit is contained in:
parent
9983aa5721
commit
7f9dc42ff1
|
@ -850,28 +850,18 @@ private:
|
||||||
void array_index_24()
|
void array_index_24()
|
||||||
{
|
{
|
||||||
// ticket #1492 and #1539
|
// ticket #1492 and #1539
|
||||||
if (CHAR_MAX == SCHAR_MAX) // plain char is signed
|
// CHAR_MAX can be equal to SCHAR_MAX or UCHAR_MAX depending on the environment.
|
||||||
{
|
// This test should work for both environments.
|
||||||
check("void f(char n) {\n"
|
std::ostringstream charMaxPlusOne;
|
||||||
|
charMaxPlusOne << (CHAR_MAX+1);
|
||||||
|
check(("void f(char n) {\n"
|
||||||
" int a[n];\n" // n <= CHAR_MAX
|
" int a[n];\n" // n <= CHAR_MAX
|
||||||
" a[-1] = 0;\n" // negative index
|
" a[-1] = 0;\n" // negative index
|
||||||
" a[128] = 0;\n" // 128 > CHAR_MAX
|
" a[" + charMaxPlusOne.str() + "] = 0;\n" // 128/256 > CHAR_MAX
|
||||||
"}\n");
|
"}\n").c_str());
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (error) Array 'a[128]' index 128 out of bounds\n"
|
ASSERT_EQUALS("[test.cpp:4]: (error) Array 'a["+charMaxPlusOne.str()+"]' index "+charMaxPlusOne.str()+" out of bounds\n"
|
||||||
"[test.cpp:3]: (error) Array index -1 is out of bounds\n", errout.str());
|
"[test.cpp:3]: (error) Array index -1 is out of bounds\n", errout.str());
|
||||||
|
|
||||||
}
|
|
||||||
else // plain char is unsigned
|
|
||||||
{
|
|
||||||
check("void f(char n) {\n"
|
|
||||||
" int a[n];\n" // n <= CHAR_MAX
|
|
||||||
" a[-1] = 0;\n" // negative index
|
|
||||||
" a[256] = 0;\n" // 256 > CHAR_MAX
|
|
||||||
"}\n");
|
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (error) Array 'a[256]' index 256 out of bounds\n"
|
|
||||||
"[test.cpp:3]: (error) Array index -1 out of bounds\n", errout.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
check("void f(signed char n) {\n"
|
check("void f(signed char n) {\n"
|
||||||
" int a[n];\n" // n <= SCHAR_MAX
|
" int a[n];\n" // n <= SCHAR_MAX
|
||||||
" a[-1] = 0;\n" // negative index
|
" a[-1] = 0;\n" // negative index
|
||||||
|
|
Loading…
Reference in New Issue