Use the struct hack, this time with standard spelling: --- ldif.c 2009-08-18 23:58:27 +++ ldif.c 2009-09-24 15:12:12 @@ -593,8 +593,8 @@ typedef struct bvlist { char *trunc; /* filename was truncated here */ int inum; /* num from "attr={num}" in filename, or INT_MIN */ char savech; /* original char at *trunc */ - char fname; /* variable length array BVL_NAME(bvl) = &fname */ -# define BVL_NAME(bvl) ((char *) (bvl) + offsetof(bvlist, fname)) + char fname[1]; /* variable length array BVL_NAME(bvl) = fname[] */ +# define BVL_NAME(bvl) ((bvl)->fname) # define BVL_SIZE(namelen) (sizeof(bvlist) + (namelen)) } bvlist;