Branch: refs/heads/yves/implicit_hek_key
  Home:   https://github.com/Perl/perl5
  Commit: a77af1f57b602c368bf2bf66a77e8e7591702957
      
https://github.com/Perl/perl5/commit/a77af1f57b602c368bf2bf66a77e8e7591702957
  Author: Yves Orton <[email protected]>
  Date:   2022-11-13 (Sun, 13 Nov 2022)

  Changed paths:
    M embed.fnc

  Log Message:
  -----------
  embed.fnc - expand comment about exporting symbols


  Commit: a2682da36c446800e9cd86b7beb2db3d666bdb8c
      
https://github.com/Perl/perl5/commit/a2682da36c446800e9cd86b7beb2db3d666bdb8c
  Author: Yves Orton <[email protected]>
  Date:   2022-11-14 (Mon, 14 Nov 2022)

  Changed paths:
    M hv.c
    M hv.h
    M sv.h

  Log Message:
  -----------
  hv.h - remove hek_key and make it implicit

Having something like this:

    struct foo {
        UV flags;
        UV len;
        char str[0];
    };
    #define STR(x) x->str

which is the overallocated to provide the required space to the char array
confuses compilers smart enough to do bound checking. We should be able to
avoid this by simply removing the str[] array as an explicit member, and the
making it a "virtual" member determined by the location of the struct and its
size. In theory this should appease gcc 12. Thus we would end up with

    struct foo {
        UV flags;
        UV len;
    };
    #define STR(x) (((char*)x)+sizeof(struct foo))

For hek_key at least the code already has macros which make this easy to do.


Compare: https://github.com/Perl/perl5/compare/a77af1f57b60%5E...a2682da36c44

Reply via email to