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))
-#      define BVL_SIZE(namelen) (sizeof(bvlist) + (namelen))
+       /* BVL_NAME(&bvlist) is the filename, allocated after the struct: */
+#      define BVL_NAME(bvl)     ((char *) ((bvl) + 1))
+#      define BVL_SIZE(namelen) (sizeof(bvlist) + (namelen) + 1)
 } bvlist;
 
 static int