Skip to content

Conversation

@laurynas-biveinis
Copy link
Contributor

  • my_charset_file_reset_charset: placement-new construct an new default object
    instead of memset'ing it to zero, fixing [1]
  • strings/conf_to_src.cc: do not memset an object that is already
    default-initialized to zero, fixing [2]

Squash with 6637b51

[1]:

strings/ctype.cc: In function ‘void my_charset_file_reset_charset(MY_CHARSET_FILE*)’:
strings/ctype.cc:303:9: error: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct CHARSET_INFO’ with no trivial copy-assignment; use value-initialization instead [-Werror=class-memaccess]
303 | memset(&i->cs, 0, sizeof(i->cs));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from strings/ctype.cc:36:
include/m_ctype.h:383:8: note: ‘struct CHARSET_INFO’ declared here
383 | struct CHARSET_INFO {
| ^~~~~~~~~~~~

[2]:

strings/conf_to_src.cc: In function ‘int main(int, char**)’:
strings/conf_to_src.cc:292:9: error: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct CHARSET_INFO’ with no trivial copy-assignment; use value-initialization instead [-Werror=class-memaccess]
292 | memset(&ncs, 0, sizeof(ncs));
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from strings/conf_to_src.cc:32:
include/m_ctype.h:383:8: note: ‘struct CHARSET_INFO’ declared here
383 | struct CHARSET_INFO {
| ^~~~~~~~~~~~

- struct CHARSET_INFO: initialize all fields to zero, as memset is no longer
  valid on its variables since acquiring an std::atomic field
- my_charset_file_reset_charset: placement-new construct an new default object
  instead of memset'ing it to zero, fixing [1]
- strings/conf_to_src.cc: do not memset an object that is already
  default-initialized to zero, fixing [2]
- partially revert the previous change [3] that asked for zero'ed memory and use
  placement new instead too.

Squash with 6637b51

[1]:

strings/ctype.cc: In function ‘void my_charset_file_reset_charset(MY_CHARSET_FILE*)’:
strings/ctype.cc:303:9: error: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct CHARSET_INFO’ with no trivial copy-assignment; use value-initialization instead [-Werror=class-memaccess]
  303 |   memset(&i->cs, 0, sizeof(i->cs));
      |   ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from strings/ctype.cc:36:
include/m_ctype.h:383:8: note: ‘struct CHARSET_INFO’ declared here
  383 | struct CHARSET_INFO {
      |        ^~~~~~~~~~~~

[2]:

strings/conf_to_src.cc: In function ‘int main(int, char**)’:
strings/conf_to_src.cc:292:9: error: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct CHARSET_INFO’ with no trivial copy-assignment; use value-initialization instead [-Werror=class-memaccess]
  292 |   memset(&ncs, 0, sizeof(ncs));
      |   ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from strings/conf_to_src.cc:32:
include/m_ctype.h:383:8: note: ‘struct CHARSET_INFO’ declared here
  383 | struct CHARSET_INFO {
      |        ^~~~~~~~~~~~

[3]: 02369bd
@laurynas-biveinis
Copy link
Contributor Author

Forgot to reset the Draft state of this PR :( It is ready for review

@laurynas-biveinis laurynas-biveinis marked this pull request as ready for review October 22, 2024 07:35
@facebook-github-bot
Copy link

@luqun has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot
Copy link

This pull request has been merged in 69710da.

@laurynas-biveinis laurynas-biveinis deleted the llvm-18-fixes branch December 6, 2024 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

3 participants