Fix C<require> in Getopt::Long to work with 5.003
[p5sagit/p5-mst-13.2.git] / av.h
diff --git a/av.h b/av.h
index 082a8ab..a8dc60b 100644 (file)
--- a/av.h
+++ b/av.h
@@ -1,6 +1,6 @@
 /*    av.h
  *
- *    Copyright (c) 1991-1994, Larry Wall
+ *    Copyright (c) 1991-1997, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -8,7 +8,7 @@
  */
 
 struct xpvav {
-    char*      xav_array;      /* pointer to malloced string */
+    char*      xav_array;      /* pointer to first array element */
     SSize_t    xav_fill;
     SSize_t    xav_max;
     IV         xof_off;        /* ptr is incremented by offset */
@@ -16,13 +16,14 @@ struct xpvav {
     MAGIC*     xmg_magic;      /* magic for scalar array */
     HV*                xmg_stash;      /* class package */
 
-    SV**       xav_alloc;
+    SV**       xav_alloc;      /* pointer to malloced string */
     SV*                xav_arylen;
     U8         xav_flags;
 };
 
 #define AVf_REAL 1     /* free old entries */
 #define AVf_REIFY 2    /* can become real */
+#define AVf_REUSED 4   /* got undeffed--don't turn old memory into SVs now */
 
 #define Nullav Null(AV*)
 
@@ -39,6 +40,9 @@ struct xpvav {
 #define AvREIFY(av)    (AvFLAGS(av) & AVf_REIFY)
 #define AvREIFY_on(av) (AvFLAGS(av) |= AVf_REIFY)
 #define AvREIFY_off(av)        (AvFLAGS(av) &= ~AVf_REIFY)
+#define AvREUSED(av)   (AvFLAGS(av) & AVf_REUSED)
+#define AvREUSED_on(av)        (AvFLAGS(av) |= AVf_REUSED)
+#define AvREUSED_off(av) (AvFLAGS(av) &= ~AVf_REUSED)
 
-#define AvREALISH(av)  AvFLAGS(av)     /* REAL or REIFY -- shortcut */
+#define AvREALISH(av)  (AvFLAGS(av) & (AVf_REAL|AVf_REIFY))