--- pattern.c	2008-01-24 16:23:15.000000000 +0100
+++ pattern.c.tempfix	2008-04-10 11:09:01.000000000 +0200
@@ -92,6 +92,7 @@
     int        lenExtra;
 };
 
+#define MAX_NBSTEPS	100
 struct _xsltCompMatch {
     struct _xsltCompMatch *next; /* siblings in the name hash */
     float priority;              /* the priority */
@@ -106,7 +107,7 @@
     int maxStep;
     xmlNsPtr *nsList;		/* the namespaces in scope */
     int nsNr;			/* the number of namespaces in scope */
-    xsltStepOp steps[40];        /* ops for computation */
+    xsltStepOp steps[MAX_NBSTEPS];        /* ops for computation */
 };
 
 typedef struct _xsltParserContext xsltParserContext;
@@ -146,7 +147,7 @@
 	return(NULL);
     }
     memset(cur, 0, sizeof(xsltCompMatch));
-    cur->maxStep = 40;
+    cur->maxStep = MAX_NBSTEPS;
     cur->nsNr = 0;
     cur->nsList = NULL;
     cur->direct = 0;
@@ -279,7 +280,7 @@
 xsltCompMatchAdd(xsltParserContextPtr ctxt, xsltCompMatchPtr comp,
                  xsltOp op, xmlChar * value, xmlChar * value2, int novar)
 {
-    if (comp->nbStep >= 40) {
+    if (comp->nbStep >= MAX_NBSTEPS) {
         xsltTransformError(NULL, NULL, NULL,
                          "xsltCompMatchAdd: overflow\n");
         return (-1);
