s |void |del_he |NN HE *p
sR |HEK* |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags
s |void |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store
-s |void |unshare_hek_or_pvn|HEK* hek|const char* str|I32 len|U32 hash
+s |void |unshare_hek_or_pvn|const HEK* hek|const char* str|I32 len|U32 hash
sR |HE* |share_hek_flags|const char* sv|I32 len|U32 hash|int flags
rs |void |hv_notallowed |int flags|NN const char *key|I32 klen|NN const char *msg
s |struct xpvhv_aux*|hv_auxinit|HV *hv
are used. If so, len and hash must both be valid for str.
*/
STATIC void
-S_unshare_hek_or_pvn(pTHX_ HEK *hek, const char *str, I32 len, U32 hash)
+S_unshare_hek_or_pvn(pTHX_ const HEK *hek, const char *str, I32 len, U32 hash)
{
register XPVHV* xhv;
register HE *entry;
I32 xhv_riter; /* current root of iterator */
};
-#define HV_AUX_SIZE STRUCT_OFFSET(struct xpvhv_aux, xhv_array)
-
/* hash structure: */
/* This structure must match the beginning of struct xpvmg in sv.h. */
struct xpvhv {
__attribute__nonnull__(pTHX_2)
__attribute__nonnull__(pTHX_3);
-STATIC void S_unshare_hek_or_pvn(pTHX_ HEK* hek, const char* str, I32 len, U32 hash);
+STATIC void S_unshare_hek_or_pvn(pTHX_ const HEK* hek, const char* str, I32 len, U32 hash);
STATIC HE* S_share_hek_flags(pTHX_ const char* sv, I32 len, U32 hash, int flags)
__attribute__warn_unused_result__;