[svn-commits] branch murf/bug_6072 - r8263 /team/murf/bug_6072/

svn-commits at lists.digium.com svn-commits at lists.digium.com
Thu Jan 19 07:46:15 MST 2006


Author: murf
Date: Thu Jan 19 08:46:12 2006
New Revision: 8263

URL: http://svn.digium.com/view/asterisk?rev=8263&view=rev
Log:
committing the propdel of svnmerge-integrated
as well as the diffs from corydon for removing the leaks.


Modified:
    team/murf/bug_6072/ast_expr2.c
    team/murf/bug_6072/ast_expr2.fl
    team/murf/bug_6072/ast_expr2.h
    team/murf/bug_6072/ast_expr2.y
    team/murf/bug_6072/ast_expr2f.c

Modified: team/murf/bug_6072/ast_expr2.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6072/ast_expr2.c?rev=8263&r1=8262&r2=8263&view=diff
==============================================================================
--- team/murf/bug_6072/ast_expr2.c (original)
+++ team/murf/bug_6072/ast_expr2.c Thu Jan 19 08:46:12 2006
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 1.875d.  */
+/* A Bison parser, made by GNU Bison 2.0.  */
 
 /* Skeleton parser for Yacc-like parsing with Bison,
    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
@@ -45,8 +45,7 @@
 /* Using locations.  */
 #define YYLSP_NEEDED 1
 
-/* If NAME_PREFIX is specified substitute the variables and functions
-   names.  */
+/* Substitute the variable and function names.  */
 #define yyparse ast_yyparse
 #define yylex   ast_yylex
 #define yyerror ast_yyerror
@@ -238,7 +237,12 @@
    some useful info about the error. Not as easy as it looks, but it
    is possible. */
 #define ast_yyerror(x) ast_yyerror(x,&yyloc,parseio)
-
+#define DESTROY(x) { \
+if ((x)->type == AST_EXPR_numeric_string || (x)->type == AST_EXPR_string) \
+	free((x)->u.s); \
+	(x)->u.s = 0; \
+	free(x); \
+}
 
 
 /* Enabling traces.  */
@@ -255,12 +259,12 @@
 #endif
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 137 "ast_expr2.y"
+#line 142 "ast_expr2.y"
 typedef union YYSTYPE {
 	struct val *val;
 } YYSTYPE;
-/* Line 191 of yacc.c.  */
-#line 264 "ast_expr2.c"
+/* Line 190 of yacc.c.  */
+#line 268 "ast_expr2.c"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
@@ -281,13 +285,13 @@
 
 
 /* Copy the second part of user declarations.  */
-#line 141 "ast_expr2.y"
+#line 146 "ast_expr2.y"
 
 extern int		ast_yylex __P((YYSTYPE *, YYLTYPE *, yyscan_t));
 
 
-/* Line 214 of yacc.c.  */
-#line 291 "ast_expr2.c"
+/* Line 213 of yacc.c.  */
+#line 295 "ast_expr2.c"
 
 #if ! defined (yyoverflow) || YYERROR_VERBOSE
 
@@ -302,14 +306,10 @@
 
 # ifdef YYSTACK_USE_ALLOCA
 #  if YYSTACK_USE_ALLOCA
-#   define YYSTACK_ALLOC alloca
-#  endif
-# else
-#  if defined (alloca) || defined (_ALLOCA_H)
-#   define YYSTACK_ALLOC alloca
-#  else
 #   ifdef __GNUC__
 #    define YYSTACK_ALLOC __builtin_alloca
+#   else
+#    define YYSTACK_ALLOC alloca
 #   endif
 #  endif
 # endif
@@ -473,9 +473,9 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned char yyrline[] =
 {
-       0,   160,   160,   168,   169,   172,   175,   178,   181,   184,
-     187,   190,   193,   196,   199,   202,   205,   208,   211,   214,
-     217,   220,   223
+       0,   165,   165,   175,   176,   180,   184,   188,   192,   196,
+     200,   204,   208,   212,   216,   220,   224,   228,   232,   236,
+     240,   244,   248
 };
 #endif
 
@@ -660,19 +660,52 @@
     }								\
 while (0)
 
+
 #define YYTERROR	1
 #define YYERRCODE	256
 
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
-   are run).  */
-
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
 #ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)		\
-   ((Current).first_line   = (Rhs)[1].first_line,	\
-    (Current).first_column = (Rhs)[1].first_column,	\
-    (Current).last_line    = (Rhs)[N].last_line,	\
-    (Current).last_column  = (Rhs)[N].last_column)
-#endif
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (N)								\
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (0)
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+              (Loc).first_line, (Loc).first_column,	\
+              (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
 
 /* YYLEX -- calling `yylex' with the right arguments.  */
 
@@ -696,19 +729,13 @@
     YYFPRINTF Args;				\
 } while (0)
 
-# define YYDSYMPRINT(Args)			\
-do {						\
-  if (yydebug)					\
-    yysymprint Args;				\
-} while (0)
-
-# define YYDSYMPRINTF(Title, Token, Value, Location)		\
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)		\
 do {								\
   if (yydebug)							\
     {								\
       YYFPRINTF (stderr, "%s ", Title);				\
       yysymprint (stderr, 					\
-                  Token, Value, Location);	\
+                  Type, Value, Location);	\
       YYFPRINTF (stderr, "\n");					\
     }								\
 } while (0)
@@ -775,8 +802,7 @@
 int yydebug;
 #else /* !YYDEBUG */
 # define YYDPRINTF(Args)
-# define YYDSYMPRINT(Args)
-# define YYDSYMPRINTF(Title, Token, Value, Location)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
@@ -793,10 +819,6 @@
    Do not make this value too large; the results are undefined if
    SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
    evaluated with infinite-precision integer arithmetic.  */
-
-#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
 
 #ifndef YYMAXDEPTH
 # define YYMAXDEPTH 10000
@@ -881,15 +903,17 @@
   (void) yylocationp;
 
   if (yytype < YYNTOKENS)
-    {
-      YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-# ifdef YYPRINT
-      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
-    }
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
   else
     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
 
+  YY_LOCATION_PRINT (yyoutput, *yylocationp);
+  fprintf (yyoutput, ": ");
+
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
   switch (yytype)
     {
       default:
@@ -905,10 +929,11 @@
 
 #if defined (__STDC__) || defined (__cplusplus)
 static void
-yydestruct (int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
 #else
 static void
-yydestruct (yytype, yyvaluep, yylocationp)
+yydestruct (yymsg, yytype, yyvaluep, yylocationp)
+    const char *yymsg;
     int yytype;
     YYSTYPE *yyvaluep;
     YYLTYPE *yylocationp;
@@ -917,6 +942,10 @@
   /* Pacify ``unused variable'' warnings.  */
   (void) yyvaluep;
   (void) yylocationp;
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
   switch (yytype)
     {
@@ -970,15 +999,15 @@
 #endif
 #endif
 {
-  /* The lookahead symbol.  */
+  /* The look-ahead symbol.  */
 int yychar;
 
-/* The semantic value of the lookahead symbol.  */
+/* The semantic value of the look-ahead symbol.  */
 YYSTYPE yylval;
 
 /* Number of syntax errors so far.  */
 int yynerrs;
-/* Location data for the lookahead symbol.  */
+/* Location data for the look-ahead symbol.  */
 YYLTYPE yylloc;
 
   register int yystate;
@@ -986,7 +1015,7 @@
   int yyresult;
   /* Number of tokens to shift before error messages enabled.  */
   int yyerrstatus;
-  /* Lookahead token as an internal (translated) token number.  */
+  /* Look-ahead token as an internal (translated) token number.  */
   int yytoken = 0;
 
   /* Three stacks and their tools:
@@ -1011,7 +1040,8 @@
   YYLTYPE yylsa[YYINITDEPTH];
   YYLTYPE *yyls = yylsa;
   YYLTYPE *yylsp;
-  YYLTYPE *yylerrsp;
+  /* The locations where the error started and ended. */
+  YYLTYPE yyerror_range[2];
 
 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
 
@@ -1041,6 +1071,15 @@
   yyssp = yyss;
   yyvsp = yyvs;
   yylsp = yyls;
+#if YYLTYPE_IS_TRIVIAL
+  /* Initialize the default location before parsing starts.  */
+  yylloc.first_line   = yylloc.last_line   = 1;
+  yylloc.first_column = yylloc.last_column = 0;
+#endif
+
+
+  yyvsp[0] = yylval;
+    yylsp[0] = yylloc;
 
   goto yysetstate;
 
@@ -1131,18 +1170,18 @@
 yybackup:
 
 /* Do appropriate processing given the current state.  */
-/* Read a lookahead token if we need one and don't already have one.  */
+/* Read a look-ahead token if we need one and don't already have one.  */
 /* yyresume: */
 
-  /* First try to decide what to do without reference to lookahead token.  */
+  /* First try to decide what to do without reference to look-ahead token.  */
 
   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
@@ -1157,7 +1196,7 @@
   else
     {
       yytoken = YYTRANSLATE (yychar);
-      YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
     }
 
   /* If the proper action on seeing token YYTOKEN is to reduce or to
@@ -1177,8 +1216,8 @@
   if (yyn == YYFINAL)
     YYACCEPT;
 
-  /* Shift the lookahead token.  */
-  YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 
   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
@@ -1229,158 +1268,180 @@
   switch (yyn)
     {
         case 2:
-#line 160 "ast_expr2.y"
+#line 165 "ast_expr2.y"
     { ((struct parse_io *)parseio)->val = (struct val *)calloc(sizeof(struct val),1);
-              ((struct parse_io *)parseio)->val->type = yyval.val->type;
-              if( yyval.val->type == AST_EXPR_integer )
-		((struct parse_io *)parseio)->val->u.i = yyval.val->u.i;
+              ((struct parse_io *)parseio)->val->type = (yyvsp[0].val)->type;
+              if( (yyvsp[0].val)->type == AST_EXPR_integer )
+				  ((struct parse_io *)parseio)->val->u.i = (yyvsp[0].val)->u.i;
               else
-                ((struct parse_io *)parseio)->val->u.s = yyval.val->u.s; ;}
+				  ((struct parse_io *)parseio)->val->u.s = (yyvsp[0].val)->u.s; 
+			  free((yyvsp[0].val));
+			;}
     break;
 
   case 3:
-#line 168 "ast_expr2.y"
-    { yyval.val= yyvsp[0].val;;}
+#line 175 "ast_expr2.y"
+    { (yyval.val)= (yyvsp[0].val);;}
     break;
 
   case 4:
-#line 169 "ast_expr2.y"
-    { yyval.val = yyvsp[-1].val; 
-	                       yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-						   yyloc.first_line=0; yyloc.last_line=0;;}
+#line 176 "ast_expr2.y"
+    { (yyval.val) = (yyvsp[-1].val); 
+	                       (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+						   (yyloc).first_line=0; (yyloc).last_line=0;
+							DESTROY((yyvsp[-2].val)); DESTROY((yyvsp[0].val)); ;}
     break;
 
   case 5:
-#line 172 "ast_expr2.y"
-    { yyval.val = op_or (yyvsp[-2].val, yyvsp[0].val);
-                         yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-						 yyloc.first_line=0; yyloc.last_line=0;;}
+#line 180 "ast_expr2.y"
+    { (yyval.val) = op_or ((yyvsp[-2].val), (yyvsp[0].val));
+						DESTROY((yyvsp[-1].val));	
+                         (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+						 (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 6:
-#line 175 "ast_expr2.y"
-    { yyval.val = op_and (yyvsp[-2].val, yyvsp[0].val); 
-	                      yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-                          yyloc.first_line=0; yyloc.last_line=0;;}
+#line 184 "ast_expr2.y"
+    { (yyval.val) = op_and ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                      (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+                          (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 7:
-#line 178 "ast_expr2.y"
-    { yyval.val = op_eq (yyvsp[-2].val, yyvsp[0].val);
-	                     yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column;
-						 yyloc.first_line=0; yyloc.last_line=0;;}
+#line 188 "ast_expr2.y"
+    { (yyval.val) = op_eq ((yyvsp[-2].val), (yyvsp[0].val));
+						DESTROY((yyvsp[-1].val));	
+	                     (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column;
+						 (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 8:
-#line 181 "ast_expr2.y"
-    { yyval.val = op_gt (yyvsp[-2].val, yyvsp[0].val);
-                         yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column;
-						 yyloc.first_line=0; yyloc.last_line=0;;}
+#line 192 "ast_expr2.y"
+    { (yyval.val) = op_gt ((yyvsp[-2].val), (yyvsp[0].val));
+						DESTROY((yyvsp[-1].val));	
+                         (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column;
+						 (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 9:
-#line 184 "ast_expr2.y"
-    { yyval.val = op_lt (yyvsp[-2].val, yyvsp[0].val); 
-	                     yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-						 yyloc.first_line=0; yyloc.last_line=0;;}
+#line 196 "ast_expr2.y"
+    { (yyval.val) = op_lt ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                     (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+						 (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 10:
-#line 187 "ast_expr2.y"
-    { yyval.val = op_ge (yyvsp[-2].val, yyvsp[0].val); 
-	                      yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-						  yyloc.first_line=0; yyloc.last_line=0;;}
+#line 200 "ast_expr2.y"
+    { (yyval.val) = op_ge ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                      (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+						  (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 11:
-#line 190 "ast_expr2.y"
-    { yyval.val = op_le (yyvsp[-2].val, yyvsp[0].val); 
-	                      yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-						  yyloc.first_line=0; yyloc.last_line=0;;}
+#line 204 "ast_expr2.y"
+    { (yyval.val) = op_le ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                      (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+						  (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 12:
-#line 193 "ast_expr2.y"
-    { yyval.val = op_ne (yyvsp[-2].val, yyvsp[0].val); 
-	                      yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-						  yyloc.first_line=0; yyloc.last_line=0;;}
+#line 208 "ast_expr2.y"
+    { (yyval.val) = op_ne ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                      (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+						  (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 13:
-#line 196 "ast_expr2.y"
-    { yyval.val = op_plus (yyvsp[-2].val, yyvsp[0].val); 
-	                       yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-						   yyloc.first_line=0; yyloc.last_line=0;;}
+#line 212 "ast_expr2.y"
+    { (yyval.val) = op_plus ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                       (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+						   (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 14:
-#line 199 "ast_expr2.y"
-    { yyval.val = op_minus (yyvsp[-2].val, yyvsp[0].val); 
-	                        yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-							yyloc.first_line=0; yyloc.last_line=0;;}
+#line 216 "ast_expr2.y"
+    { (yyval.val) = op_minus ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                        (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+							(yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 15:
-#line 202 "ast_expr2.y"
-    { yyval.val = op_negate (yyvsp[0].val); 
-	                        yyloc.first_column = yylsp[-1].first_column; yyloc.last_column = yylsp[0].last_column; 
-							yyloc.first_line=0; yyloc.last_line=0;;}
+#line 220 "ast_expr2.y"
+    { (yyval.val) = op_negate ((yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                        (yyloc).first_column = (yylsp[-1]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+							(yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 16:
-#line 205 "ast_expr2.y"
-    { yyval.val = op_compl (yyvsp[0].val); 
-	                        yyloc.first_column = yylsp[-1].first_column; yyloc.last_column = yylsp[0].last_column; 
-							yyloc.first_line=0; yyloc.last_line=0;;}
+#line 224 "ast_expr2.y"
+    { (yyval.val) = op_compl ((yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                        (yyloc).first_column = (yylsp[-1]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+							(yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 17:
-#line 208 "ast_expr2.y"
-    { yyval.val = op_times (yyvsp[-2].val, yyvsp[0].val); 
-	                       yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-						   yyloc.first_line=0; yyloc.last_line=0;;}
+#line 228 "ast_expr2.y"
+    { (yyval.val) = op_times ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                       (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+						   (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 18:
-#line 211 "ast_expr2.y"
-    { yyval.val = op_div (yyvsp[-2].val, yyvsp[0].val); 
-	                      yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-						  yyloc.first_line=0; yyloc.last_line=0;;}
+#line 232 "ast_expr2.y"
+    { (yyval.val) = op_div ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                      (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+						  (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 19:
-#line 214 "ast_expr2.y"
-    { yyval.val = op_rem (yyvsp[-2].val, yyvsp[0].val); 
-	                      yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-						  yyloc.first_line=0; yyloc.last_line=0;;}
+#line 236 "ast_expr2.y"
+    { (yyval.val) = op_rem ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                      (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+						  (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 20:
-#line 217 "ast_expr2.y"
-    { yyval.val = op_colon (yyvsp[-2].val, yyvsp[0].val); 
-	                        yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-							yyloc.first_line=0; yyloc.last_line=0;;}
+#line 240 "ast_expr2.y"
+    { (yyval.val) = op_colon ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                        (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+							(yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 21:
-#line 220 "ast_expr2.y"
-    { yyval.val = op_eqtilde (yyvsp[-2].val, yyvsp[0].val); 
-	                        yyloc.first_column = yylsp[-2].first_column; yyloc.last_column = yylsp[0].last_column; 
-							yyloc.first_line=0; yyloc.last_line=0;;}
+#line 244 "ast_expr2.y"
+    { (yyval.val) = op_eqtilde ((yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-1].val));	
+	                        (yyloc).first_column = (yylsp[-2]).first_column; (yyloc).last_column = (yylsp[0]).last_column; 
+							(yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
   case 22:
-#line 223 "ast_expr2.y"
-    { yyval.val = op_cond (yyvsp[-4].val, yyvsp[-2].val, yyvsp[0].val); 
-	                        yyloc.first_column = yylsp[-4].first_column; yyloc.last_column = yylsp[-2].last_column; 
-							yyloc.first_line=0; yyloc.last_line=0;;}
+#line 248 "ast_expr2.y"
+    { (yyval.val) = op_cond ((yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[0].val)); 
+						DESTROY((yyvsp[-3].val));	
+						DESTROY((yyvsp[-1].val));	
+	                        (yyloc).first_column = (yylsp[-4]).first_column; (yyloc).last_column = (yylsp[-2]).last_column; 
+							(yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
 
     }
 
-/* Line 1010 of yacc.c.  */
-#line 1384 "ast_expr2.c"
+/* Line 1037 of yacc.c.  */
+#line 1445 "ast_expr2.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -1476,11 +1537,11 @@
 	yyerror ("syntax error");
     }
 
-  yylerrsp = yylsp;
+  yyerror_range[0] = yylloc;
 
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse lookahead token after an
+      /* If just tried and failed to reuse look-ahead token after an
 	 error, discard it.  */
 
       if (yychar <= YYEOF)
@@ -1490,23 +1551,22 @@
 	  if (yychar == YYEOF)
 	     for (;;)
 	       {
+                 yyerror_range[0] = *yylsp;
 		 YYPOPSTACK;
 		 if (yyssp == yyss)
 		   YYABORT;
-		 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-		 yydestruct (yystos[*yyssp], yyvsp, yylsp);
+		 yydestruct ("Error: popping",
+                             yystos[*yyssp], yyvsp, yylsp);
 	       }
         }
       else
 	{
-	  YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
-	  yydestruct (yytoken, &yylval, &yylloc);
+	  yydestruct ("Error: discarding", yytoken, &yylval, &yylloc);
 	  yychar = YYEMPTY;
-	  *++yylerrsp = yylloc;
 	}
     }
 
-  /* Else will try to reuse lookahead token after shifting the error
+  /* Else will try to reuse look-ahead token after shifting the error
      token.  */
   goto yyerrlab1;
 
@@ -1523,12 +1583,11 @@
      goto yyerrorlab;
 #endif
 
+  yyerror_range[0] = yylsp[1-yylen];
+  yylsp -= yylen;
   yyvsp -= yylen;
   yyssp -= yylen;
   yystate = *yyssp;
-  yylerrsp = yylsp;
-  *++yylerrsp = yyloc;
-  yylsp -= yylen;
   goto yyerrlab1;
 
 
@@ -1556,8 +1615,8 @@
       if (yyssp == yyss)
 	YYABORT;
 
-      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
-      yydestruct (yystos[yystate], yyvsp, yylsp);
+      yyerror_range[0] = *yylsp;
+      yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp);
       YYPOPSTACK;
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
@@ -1566,11 +1625,16 @@
   if (yyn == YYFINAL)
     YYACCEPT;
 
-  YYDPRINTF ((stderr, "Shifting error token, "));
-
   *++yyvsp = yylval;
-  YYLLOC_DEFAULT (yyloc, yylsp, yylerrsp - yylsp);
+
+  yyerror_range[1] = yylloc;
+  /* Using YYLLOC is tempting, but would change the location of
+     the look-ahead.  YYLOC is available though. */
+  YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2);
   *++yylsp = yyloc;
+
+  /* Shift the error token. */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
 
   yystate = yyn;
   goto yynewstate;
@@ -1587,6 +1651,9 @@
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
 yyabortlab:
+  yydestruct ("Error: discarding lookahead",
+              yytoken, &yylval, &yylloc);
+  yychar = YYEMPTY;
   yyresult = 1;
   goto yyreturn;
 
@@ -1609,7 +1676,7 @@
 }
 
 
-#line 228 "ast_expr2.y"
+#line 255 "ast_expr2.y"
 
 
 static struct val *
@@ -1666,6 +1733,7 @@
 	}
 	if (vp->type == AST_EXPR_string || vp->type == AST_EXPR_numeric_string)
 		free (vp->u.s);	
+	free(vp);
 }
 
 

Modified: team/murf/bug_6072/ast_expr2.fl
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6072/ast_expr2.fl?rev=8263&r1=8262&r2=8263&view=diff
==============================================================================
--- team/murf/bug_6072/ast_expr2.fl (original)
+++ team/murf/bug_6072/ast_expr2.fl Thu Jan 19 08:46:12 2006
@@ -1,4 +1,9 @@
 %{
+/*! \file
+ *
+ * \brief Dialplan Expression Parser
+ */
+
 #include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -44,7 +49,7 @@
  
 void ast_yyset_column(int column_no, yyscan_t yyscanner);
 int ast_yyget_column(yyscan_t yyscanner);
-
+static int curlycount = 0;
 %}
 
 %option prefix="ast_yy"
@@ -54,6 +59,7 @@
 %option bison-bridge
 %option bison-locations
 %option noyywrap
+%x var trail
 
 %%
 
@@ -75,6 +81,8 @@
 \:\:	{ SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
 \(	{ SET_COLUMNS; SET_STRING; return TOK_LP;}
 \)	{ SET_COLUMNS; SET_STRING; return TOK_RP;}
+\$\{   {/* gather the contents of ${} expressions, with trailing stuff, into a single TOKEN. They are much more complex now than they used to be */
+                       curlycount = 0; BEGIN(var); yymore();}
 
 [ 	\r]		{}
 \"[^"]*\"   {SET_COLUMNS; SET_STRING; return TOKEN;}
@@ -83,7 +91,14 @@
 [0-9]+		{   SET_COLUMNS;  /* the original behavior of the expression parser was to bring in numbers as a numeric string */
 				SET_NUMERIC_STRING;
 				return TOKEN;}
-[a-zA-Z0-9,.';{}\\_^%$#@!]+	{SET_COLUMNS; SET_STRING; return TOKEN;}
+[a-zA-Z0-9,.';\\_^%$#@!]+	{SET_COLUMNS; SET_STRING; return TOKEN;}
+
+<var>[^{}]*\}  {curlycount--; if(curlycount < 0){ BEGIN(trail);  yymore();} else {  yymore();}}
+<var>[^{}]*\{  {curlycount++; yymore();  }
+<trail>[^-\t\r \n$():?%/+=*<>!|&]* {BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN;}
+<trail>[-\t\r \n$():?%/+=*<>!|&]        {char c = yytext[yyleng-1]; BEGIN(0); unput(c); SET_COLUMNS; SET_STRING; return TOKEN;}
+<trail>\$\{            {curlycount = 0; BEGIN(var); yymore();  }
+<trail><<EOF>>		{BEGIN(0); SET_COLUMNS; SET_STRING; return TOKEN; /* actually, if an expr is only a variable ref, this could happen a LOT */}
 
 %%
 
@@ -130,6 +145,7 @@
 			ast_copy_string(buf, io.val->u.s, length);
 #endif /* STANDALONE */
 			return_value = strlen(buf);
+			free(io.val->u.s);
 		}
 		free(io.val);
 	}
@@ -144,15 +160,6 @@
 	int i=0;
 	spacebuf[0] = 0;
 	
-#ifdef WHEN_LOC_MEANS_SOMETHING
-	if( loc->first_column > 7990 ) /* if things get out of whack, why crash? */
-		loc->first_column = 7990;
-	if( loc->last_column > 7990 )
-		loc->last_column = 7990;
-	for(i=0;i<loc->first_column;i++) spacebuf[i] = ' ';
-	for(   ;i<loc->last_column;i++) spacebuf[i] = '^';
-	spacebuf[i] = 0;
-#endif
 	for(i=0;i< (int)(yytext - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);i++) spacebuf2[i] = ' ';  /* uh... assuming yyg is defined, then I can use the yycolumn macro,
 													which is the same thing as... get this:
 													yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]->yy_bs_column

Modified: team/murf/bug_6072/ast_expr2.h
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6072/ast_expr2.h?rev=8263&r1=8262&r2=8263&view=diff
==============================================================================
--- team/murf/bug_6072/ast_expr2.h (original)
+++ team/murf/bug_6072/ast_expr2.h Thu Jan 19 08:46:12 2006
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 1.875d.  */
+/* A Bison parser, made by GNU Bison 2.0.  */
 
 /* Skeleton parser for Yacc-like parsing with Bison,
    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
@@ -78,11 +78,11 @@
 
 
 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
-#line 137 "ast_expr2.y"
+#line 142 "ast_expr2.y"
 typedef union YYSTYPE {
 	struct val *val;
 } YYSTYPE;
-/* Line 1285 of yacc.c.  */
+/* Line 1318 of yacc.c.  */
 #line 87 "ast_expr2.h"
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1

Modified: team/murf/bug_6072/ast_expr2.y
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6072/ast_expr2.y?rev=8263&r1=8262&r2=8263&view=diff
==============================================================================
--- team/murf/bug_6072/ast_expr2.y (original)
+++ team/murf/bug_6072/ast_expr2.y Thu Jan 19 08:46:12 2006
@@ -124,7 +124,12 @@
    some useful info about the error. Not as easy as it looks, but it
    is possible. */
 #define ast_yyerror(x) ast_yyerror(x,&yyloc,parseio)
-
+#define DESTROY(x) { \
+if ((x)->type == AST_EXPR_numeric_string || (x)->type == AST_EXPR_string) \
+	free((x)->u.s); \
+	(x)->u.s = 0; \
+	free(x); \
+}
 %}
  
 %pure-parser
@@ -158,69 +163,91 @@
 %%
 
 start: expr { ((struct parse_io *)parseio)->val = (struct val *)calloc(sizeof(struct val),1);
-              ((struct parse_io *)parseio)->val->type = $$->type;
-              if( $$->type == AST_EXPR_integer )
-		((struct parse_io *)parseio)->val->u.i = $$->u.i;
+              ((struct parse_io *)parseio)->val->type = $1->type;
+              if( $1->type == AST_EXPR_integer )
+				  ((struct parse_io *)parseio)->val->u.i = $1->u.i;
               else
-                ((struct parse_io *)parseio)->val->u.s = $$->u.s; }
+				  ((struct parse_io *)parseio)->val->u.s = $1->u.s; 
+			  free($1);
+			}
 	;
 
 expr:	TOKEN   { $$= $1;}
 	| TOK_LP expr TOK_RP { $$ = $2; 
 	                       @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
-						   @$.first_line=0; @$.last_line=0;}
+						   @$.first_line=0; @$.last_line=0;
+							DESTROY($1); DESTROY($3); }
 	| expr TOK_OR expr { $$ = op_or ($1, $3);
+						DESTROY($2);	
                          @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 						 @$.first_line=0; @$.last_line=0;}
 	| expr TOK_AND expr { $$ = op_and ($1, $3); 
+						DESTROY($2);	
 	                      @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
                           @$.first_line=0; @$.last_line=0;}
 	| expr TOK_EQ expr { $$ = op_eq ($1, $3);
+						DESTROY($2);	
 	                     @$.first_column = @1.first_column; @$.last_column = @3.last_column;
 						 @$.first_line=0; @$.last_line=0;}
 	| expr TOK_GT expr { $$ = op_gt ($1, $3);
+						DESTROY($2);	
                          @$.first_column = @1.first_column; @$.last_column = @3.last_column;
 						 @$.first_line=0; @$.last_line=0;}
 	| expr TOK_LT expr { $$ = op_lt ($1, $3); 
+						DESTROY($2);	
 	                     @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 						 @$.first_line=0; @$.last_line=0;}
 	| expr TOK_GE expr  { $$ = op_ge ($1, $3); 
+						DESTROY($2);	
 	                      @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 						  @$.first_line=0; @$.last_line=0;}
 	| expr TOK_LE expr  { $$ = op_le ($1, $3); 
+						DESTROY($2);	
 	                      @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 						  @$.first_line=0; @$.last_line=0;}
 	| expr TOK_NE expr  { $$ = op_ne ($1, $3); 
+						DESTROY($2);	
 	                      @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 						  @$.first_line=0; @$.last_line=0;}
 	| expr TOK_PLUS expr { $$ = op_plus ($1, $3); 
+						DESTROY($2);	
 	                       @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 						   @$.first_line=0; @$.last_line=0;}
 	| expr TOK_MINUS expr { $$ = op_minus ($1, $3); 
+						DESTROY($2);	
 	                        @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 							@$.first_line=0; @$.last_line=0;}
 	| TOK_MINUS expr %prec TOK_COMPL { $$ = op_negate ($2); 
+						DESTROY($1);	
 	                        @$.first_column = @1.first_column; @$.last_column = @2.last_column; 
 							@$.first_line=0; @$.last_line=0;}
 	| TOK_COMPL expr   { $$ = op_compl ($2); 
+						DESTROY($1);	
 	                        @$.first_column = @1.first_column; @$.last_column = @2.last_column; 
 							@$.first_line=0; @$.last_line=0;}
 	| expr TOK_MULT expr { $$ = op_times ($1, $3); 
+						DESTROY($2);	
 	                       @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 						   @$.first_line=0; @$.last_line=0;}
 	| expr TOK_DIV expr { $$ = op_div ($1, $3); 
+						DESTROY($2);	
 	                      @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 						  @$.first_line=0; @$.last_line=0;}
 	| expr TOK_MOD expr { $$ = op_rem ($1, $3); 
+						DESTROY($2);	
 	                      @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 						  @$.first_line=0; @$.last_line=0;}
 	| expr TOK_COLON expr { $$ = op_colon ($1, $3); 
+						DESTROY($2);	
 	                        @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 							@$.first_line=0; @$.last_line=0;}
 	| expr TOK_EQTILDE expr { $$ = op_eqtilde ($1, $3); 
+						DESTROY($2);	
 	                        @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 							@$.first_line=0; @$.last_line=0;}
 	| expr TOK_COND expr TOK_COLONCOLON expr  { $$ = op_cond ($1, $3, $5); 
+						DESTROY($2);	
+						DESTROY($4);	
 	                        @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
 							@$.first_line=0; @$.last_line=0;}
 	;
@@ -281,6 +308,7 @@
 	}
 	if (vp->type == AST_EXPR_string || vp->type == AST_EXPR_numeric_string)
 		free (vp->u.s);	
+	free(vp);
 }
 
 

Modified: team/murf/bug_6072/ast_expr2f.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug_6072/ast_expr2f.c?rev=8263&r1=8262&r2=8263&view=diff
==============================================================================
--- team/murf/bug_6072/ast_expr2f.c (original)
+++ team/murf/bug_6072/ast_expr2f.c Thu Jan 19 08:46:12 2006
@@ -347,266 +347,266 @@
     },
 
     {
-        3,    4,    4,    4,    4,    4,    4,    4,    4,    5,
-        6,    4,    4,    5,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    5,    7,    8,    9,    9,   10,   11,    9,
-       12,   13,   14,   15,    9,   16,    9,   17,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   19,    9,
-       20,   21,   22,   23,    9,    9,    9,    9,    9,    9,
-
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    4,    9,    4,    9,    9,    4,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,   24,    9,    4,    4
-    },
-
-    {
-        3,    4,    4,    4,    4,    4,    4,    4,    4,    5,
-        6,    4,    4,    5,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    5,    7,    8,    9,    9,   10,   11,    9,
-
-       12,   13,   14,   15,    9,   16,    9,   17,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   19,    9,
-       20,   21,   22,   23,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    4,    9,    4,    9,    9,    4,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,    9,   24,    9,    4,    4
-    },
-
-    {
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3,
-       -3,   -3,   -3,   -3,   -3,   -3,   -3,   -3
-    },
-
-    {
-        3,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4,
-       -4,   -4,   -4,   -4,   -4,   -4,   -4,   -4
-    },
-
-    {
-        3,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5,
-       -5,   -5,   -5,   -5,   -5,   -5,   -5,   -5
-    },
-
-    {
-        3,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,
-       -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,   -6,

[... 1424 lines stripped ...]


More information about the svn-commits mailing list