https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103939

            Bug ID: 103939
           Summary: memset with sizeof in wrong place not detected ?
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dcb314 at hotmail dot com
  Target Milestone: ---

For this C++ code:

$ more jan7d.cc

#include <cstring>

struct S
{
        int a;
        int b;
        int c;
        int d;
};

void f( S * ps)
{
   memset(ps, sizeof(S), 0xff);
}

compiled with recent gcc trunk:

$ /home/dcb/gcc/results/bin/gcc -c -g -O2 -Wall -Wextra -pedantic jan7d.cc
$ 

compiled by clang-13:

$ /usr/bin/clang++ -c -g -O2 -Wall -Wextra -pedantic jan7d.cc
jan7d.cc:14:15: warning: setting buffer to a 'sizeof' expression; did you mean
to transpose the last two arguments? [-Wmemset-transposed-args]
   memset(ps, sizeof(S), 0xff);
              ^
jan7d.cc:14:15: note: cast the second argument to 'int' to silence
1 warning generated.

Reply via email to