gagolews / stringi

Fast and portable character string processing in R (with the Unicode ICU)
https://stringi.gagolewski.com/
Other
304 stars 44 forks source link

warning in icu61/common/cstring.h:43:70 on R Under development (unstable) (2019-12-21 r77613) / winbuilder #364

Closed gagolews closed 4 years ago

gagolews commented 4 years ago
Found the following significant warnings:
  icu61/common/cstring.h:43:70: warning: 'char* strncpy(char*, const char*, size_t)' specified bound depends on the length of the source argument [-Wstringop-overflow=]

---

In file included from icu61/common/uloc.cpp:41:
icu61/common/uloc.cpp: In function 'int32_t _canonicalize(const char*, char*, int32_t, uint32_t, UErrorCode*)':
icu61/common/cstring.h:43:70: warning: 'char* strncpy(char*, const char*, size_t)' specified bound depends on the length of the source argument [-Wstringop-overflow=]
 #define uprv_strncpy(dst, src, size) U_STANDARD_CPP_NAMESPACE strncpy(dst, src, size)
icu61/common/uloc.cpp:1741:13: note: in expansion of macro 'uprv_strncpy'
             uprv_strncpy(name, d, len+1); // Marek/stringi WAS: len, not len+1
             ^~~~~~~~~~~~
icu61/common/cstring.h:37:57: note: length computed here
 #define uprv_strlen(str) U_STANDARD_CPP_NAMESPACE strlen(str)
icu61/common/uloc.cpp:1738:24: note: in expansion of macro 'uprv_strlen'
         len = (int32_t)uprv_strlen(d);
                        ^~~~~~~~~~~

In file included from icu61/common/ucurr.cpp:22:
In constructor 'CReg::CReg(const UChar*, const char*)',
    inlined from 'static const void* CReg::reg(const UChar*, const char*, UErrorCode*)' at icu61/common/ucurr.cpp:432:41,
    inlined from 'const void* ucurr_register_61_stringi(const UChar*, const char*, UErrorCode*)' at icu61/common/ucurr.cpp:504:25:
icu61/common/cstring.h:43:70: warning: 'char* strncpy(char*, const char*, size_t)' specified bound depends on the length of the source argument [-Wstringop-overflow=]
 #define uprv_strncpy(dst, src, size) U_STANDARD_CPP_NAMESPACE strncpy(dst, src, size)
icu61/common/ucurr.cpp:423:9: note: in expansion of macro 'uprv_strncpy'
         uprv_strncpy(id, _id, len+1);
         ^~~~~~~~~~~~
icu61/common/ucurr.cpp: In function 'const void* ucurr_register_61_stringi(const UChar*, const char*, UErrorCode*)':
icu61/common/cstring.h:37:57: note: length computed here
 #define uprv_strlen(str) U_STANDARD_CPP_NAMESPACE strlen(str)
icu61/common/ucurr.cpp:419:32: note: in expansion of macro 'uprv_strlen'
         int32_t len = (int32_t)uprv_strlen(_id);
                                ^~~~~~~~~~~