mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Test_cel: Fails when DONT_OPTIMIZE is off
A bug in GCC causes TEST_CEL to return failure under the following conditions: 1. TEST_FRAMEWORK on 2. DONT_OPTIMIZE off 3. Fedora and Ubuntu 4. GCC 8.2.1 5. Test name: test_cel_dial_pickup 6. There must exist a certain combination of multithreading. The bug affects arithmetic calculations when the optimization level is bigger than O1 and the -fpartial-inline flag is on. Provided these conditions, function ast_str_to_lower() fails to convert to lower case due to said function being of type force_inline. The solution is to remove the "force_inline" type declaration from function ast_str_to_lower() Change-Id: Ied32e0071f12ed9d5f3b4cdd878b2532a1c769d7
This commit is contained in:
committed by
Chris Savinovich
parent
deffb8a6e0
commit
1c8378bbc9
@@ -1212,19 +1212,7 @@ static force_inline int attribute_pure ast_str_case_hash(const char *str)
|
|||||||
*
|
*
|
||||||
* \retval str for convenience
|
* \retval str for convenience
|
||||||
*/
|
*/
|
||||||
static force_inline char *attribute_pure ast_str_to_lower(char *str)
|
char *attribute_pure ast_str_to_lower(char *str);
|
||||||
{
|
|
||||||
char *str_orig = str;
|
|
||||||
if (!str) {
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (; *str; ++str) {
|
|
||||||
*str = tolower(*str);
|
|
||||||
}
|
|
||||||
|
|
||||||
return str_orig;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Convert a string to all upper-case
|
* \brief Convert a string to all upper-case
|
||||||
|
@@ -421,3 +421,18 @@ int ast_vector_string_split(struct ast_vector_string *dest,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *attribute_pure ast_str_to_lower(char *str)
|
||||||
|
{
|
||||||
|
char *str_orig = str;
|
||||||
|
if (!str) {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; *str; ++str) {
|
||||||
|
*str = tolower(*str);
|
||||||
|
}
|
||||||
|
|
||||||
|
return str_orig;
|
||||||
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user