[PATCH 5.004_60] Fix to MM_VMS.PM
[p5sagit/p5-mst-13.2.git] / regcomp.c
index a42c4db..55576d0 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -182,6 +182,7 @@ static scan_data_t zero_scan_data = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 #define SF_HAS_PAR             0x80
 #define SF_IN_PAR              0x100
 #define SF_HAS_EVAL            0x200
+#define SCF_DO_SUBSTR          0x400
 
 static void
 scan_commit(scan_data_t *data)
@@ -215,8 +216,6 @@ scan_commit(scan_data_t *data)
     data->flags &= ~SF_BEFORE_EOL;
 }
 
-#define SCF_DO_SUBSTR 1
-
 /* Stops at toplevel WHILEM as well as at `last'. At end *scanp is set
    to the position after last scanned or to NULL. */
 
@@ -340,7 +339,7 @@ study_chunk(regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32
                    scan = next;
                    if (data_fake.flags & (SF_HAS_PAR|SF_IN_PAR))
                        pars++;
-                   if (data_fake.flags & SF_HAS_EVAL)
+                   if (data && (data_fake.flags & SF_HAS_EVAL))
                        data->flags |= SF_HAS_EVAL;
                    if (code == SUSPEND) 
                        break;
@@ -586,7 +585,7 @@ study_chunk(regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32
                        data->longest = &(data->longest_float);
                    }
                }
-               if (fl & SF_HAS_EVAL)
+               if (data && (fl & SF_HAS_EVAL))
                    data->flags |= SF_HAS_EVAL;
              optimize_curly_tail:
 #ifdef REGALIGN
@@ -635,7 +634,7 @@ study_chunk(regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32
            }
            if (data && data_fake.flags & (SF_HAS_PAR|SF_IN_PAR))
                pars++;
-           if (data_fake.flags & SF_HAS_EVAL)
+           if (data && (data_fake.flags & SF_HAS_EVAL))
                data->flags |= SF_HAS_EVAL;
        } else if (OP(scan) == OPEN) {
            pars++;
@@ -2046,12 +2045,7 @@ nextchar(void)
 - reg_node - emit a node
 */
 static regnode *                       /* Location. */
-#ifdef CAN_PROTOTYPE
 reg_node(U8 op)
-#else
-reg_node(op)
-U8 op;
-#endif
 {
     register regnode *ret;
     register regnode *ptr;
@@ -2079,13 +2073,7 @@ U8 op;
 - reganode - emit a node with an argument
 */
 static regnode *                       /* Location. */
-#ifdef CAN_PROTOTYPE
 reganode(U8 op, U32 arg)
-#else
-reganode(op, arg)
-U8 op;
-U32 arg;
-#endif
 {
     register regnode *ret;
     register regnode *ptr;
@@ -2112,15 +2100,8 @@ U32 arg;
 /*
 - regc - emit (if appropriate) a byte of code
 */
-#ifdef CAN_PROTOTYPE
 static void
 regc(U8 b, char* s)
-#else
-static void
-regc(b, s)
-U8 b;
-char *s;
-#endif
 {
     if (!SIZE_ONLY)
        *s = b;
@@ -2131,15 +2112,8 @@ char *s;
 *
 * Means relocating the operand.
 */
-#ifdef CAN_PROTOTYPE
 static void
 reginsert(U8 op, regnode *opnd)
-#else
-static void
-reginsert(op, opnd)
-U8 op;
-regnode *opnd;
-#endif
 {
     register regnode *src;
     register regnode *dst;