diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 2bf394e74dc8a4eef539a17a61fb040a74a14105..eb9f9895839e1bd1adaa80e7c90d8e241e27dbf4 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -195,7 +195,7 @@ #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.221 2004-12-30 01:48:53 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.222 2004-12-30 05:43:42 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -243,8 +243,6 @@ #include "STL.h" #include "Visibility.h" -// FIXME: most tSTRING and tBIGSTRING are leaked: Free() them! - Tree_T *Symbol_T = NULL; extern Context_T CTX; @@ -269,7 +267,7 @@ void skip_until(char *skip, char *until); int PrintListOfDouble(char *format, List_T *list, char *buffer); int CheckViewErrorFlags(Post_View *v); -#line 77 "Gmsh.y" +#line 75 "Gmsh.y" typedef union { char *c; int i; @@ -739,55 +737,55 @@ static const short yyrhs[] = { 214, #if YYDEBUG != 0 static const short yyrline[] = { 0, - 163, 165, 166, 167, 172, 174, 177, 179, 182, 190, - 204, 221, 223, 226, 228, 229, 232, 238, 243, 244, - 245, 248, 252, 255, 261, 266, 272, 280, 285, 289, - 295, 300, 304, 309, 313, 316, 321, 325, 329, 333, - 338, 342, 345, 349, 353, 357, 361, 365, 369, 372, - 376, 379, 383, 386, 393, 395, 398, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 415, 420, 436, 443, 451, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 489, 492, 496, 502, 508, 511, 515, - 522, 529, 532, 536, 543, 550, 553, 557, 566, 573, - 576, 580, 589, 596, 599, 603, 612, 619, 622, 626, - 639, 646, 649, 653, 666, 673, 676, 680, 693, 700, - 703, 707, 721, 728, 731, 735, 749, 756, 759, 763, - 777, 784, 787, 791, 805, 812, 815, 819, 833, 840, - 843, 847, 861, 868, 871, 875, 899, 906, 909, 913, - 937, 944, 947, 951, 975, 982, 985, 989, 1008, 1015, - 1018, 1022, 1041, 1048, 1051, 1055, 1074, 1081, 1084, 1088, - 1106, 1113, 1116, 1120, 1138, 1145, 1148, 1152, 1170, 1177, - 1183, 1190, 1198, 1204, 1210, 1217, 1225, 1231, 1239, 1242, - 1246, 1254, 1256, 1257, 1258, 1259, 1262, 1264, 1267, 1299, - 1335, 1384, 1400, 1410, 1428, 1441, 1457, 1482, 1508, 1521, - 1537, 1550, 1566, 1585, 1607, 1616, 1630, 1650, 1666, 1685, - 1704, 1722, 1740, 1758, 1784, 1802, 1828, 1847, 1871, 1895, - 1921, 1938, 1956, 1975, 1994, 2033, 2058, 2080, 2096, 2115, - 2134, 2150, 2169, 2186, 2203, 2223, 2229, 2234, 2239, 2246, - 2248, 2249, 2252, 2257, 2261, 2277, 2293, 2309, 2329, 2343, - 2353, 2363, 2372, 2381, 2398, 2412, 2420, 2425, 2436, 2449, - 2493, 2507, 2522, 2531, 2541, 2545, 2549, 2553, 2564, 2581, - 2597, 2623, 2650, 2682, 2688, 2693, 2698, 2702, 2710, 2729, - 2745, 2761, 2766, 2782, 2787, 2803, 2808, 2826, 2849, 2872, - 2895, 2900, 2923, 2928, 2951, 2956, 2982, 3005, 3028, 3051, - 3056, 3079, 3085, 3108, 3114, 3139, 3143, 3148, 3175, 3199, - 3207, 3226, 3244, 3262, 3289, 3315, 3341, 3355, 3373, 3378, - 3387, 3389, 3390, 3391, 3392, 3395, 3397, 3398, 3399, 3400, - 3401, 3402, 3403, 3404, 3411, 3412, 3413, 3414, 3415, 3416, - 3417, 3418, 3419, 3420, 3421, 3422, 3423, 3424, 3425, 3426, - 3427, 3428, 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, - 3437, 3438, 3439, 3440, 3441, 3442, 3444, 3445, 3446, 3447, - 3448, 3449, 3450, 3451, 3452, 3453, 3454, 3455, 3456, 3457, - 3458, 3459, 3460, 3461, 3462, 3463, 3464, 3469, 3474, 3475, - 3476, 3480, 3492, 3511, 3524, 3536, 3558, 3575, 3592, 3609, - 3626, 3632, 3637, 3641, 3645, 3649, 3655, 3660, 3664, 3668, - 3674, 3678, 3683, 3687, 3692, 3696, 3700, 3706, 3712, 3719, - 3725, 3729, 3733, 3744, 3751, 3762, 3782, 3792, 3802, 3814, - 3830, 3848, 3871, 3898, 3904, 3908, 3912, 3924, 3929, 3941, - 3947, 3967, 3972, 3985, 3991, 3997, 4002, 4010, 4024, 4028, - 4047, 4063 + 161, 163, 164, 165, 170, 172, 175, 177, 180, 188, + 202, 223, 225, 228, 230, 231, 234, 240, 245, 246, + 247, 250, 254, 257, 263, 268, 274, 282, 287, 291, + 297, 302, 306, 311, 315, 318, 323, 327, 331, 335, + 340, 344, 347, 351, 355, 359, 363, 367, 371, 374, + 378, 381, 385, 388, 395, 397, 400, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 417, 423, 440, 448, 457, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 490, 491, 492, 495, 498, 502, 508, 514, 517, 521, + 528, 535, 538, 542, 549, 556, 559, 563, 572, 579, + 582, 586, 595, 602, 605, 609, 618, 625, 628, 632, + 645, 652, 655, 659, 672, 679, 682, 686, 699, 706, + 709, 713, 727, 734, 737, 741, 755, 762, 765, 769, + 783, 790, 793, 797, 811, 818, 821, 825, 839, 846, + 849, 853, 867, 874, 877, 881, 905, 912, 915, 919, + 943, 950, 953, 957, 981, 988, 991, 995, 1014, 1021, + 1024, 1028, 1047, 1054, 1057, 1061, 1080, 1087, 1090, 1094, + 1112, 1119, 1122, 1126, 1144, 1151, 1154, 1158, 1176, 1183, + 1189, 1196, 1204, 1210, 1216, 1223, 1231, 1237, 1245, 1248, + 1252, 1260, 1262, 1263, 1264, 1265, 1268, 1270, 1273, 1308, + 1347, 1401, 1418, 1429, 1448, 1462, 1479, 1505, 1532, 1546, + 1563, 1577, 1594, 1614, 1637, 1647, 1662, 1682, 1698, 1717, + 1736, 1754, 1772, 1790, 1816, 1834, 1860, 1880, 1904, 1928, + 1954, 1971, 1989, 2008, 2027, 2066, 2091, 2113, 2129, 2148, + 2167, 2183, 2202, 2219, 2236, 2256, 2262, 2267, 2272, 2279, + 2281, 2282, 2285, 2290, 2294, 2310, 2326, 2342, 2362, 2376, + 2387, 2397, 2407, 2417, 2435, 2449, 2458, 2464, 2475, 2488, + 2533, 2548, 2564, 2574, 2585, 2589, 2593, 2597, 2608, 2625, + 2641, 2667, 2694, 2726, 2733, 2738, 2744, 2748, 2756, 2775, + 2791, 2807, 2812, 2828, 2833, 2849, 2854, 2872, 2895, 2918, + 2941, 2946, 2969, 2974, 2997, 3002, 3028, 3051, 3074, 3097, + 3102, 3125, 3131, 3154, 3160, 3185, 3189, 3194, 3221, 3245, + 3253, 3272, 3290, 3308, 3335, 3361, 3387, 3401, 3419, 3424, + 3433, 3435, 3436, 3437, 3438, 3441, 3443, 3444, 3445, 3446, + 3447, 3448, 3449, 3450, 3457, 3458, 3459, 3460, 3461, 3462, + 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, + 3473, 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481, 3482, + 3483, 3484, 3485, 3486, 3487, 3488, 3490, 3491, 3492, 3493, + 3494, 3495, 3496, 3497, 3498, 3499, 3500, 3501, 3502, 3503, + 3504, 3505, 3506, 3507, 3508, 3509, 3510, 3515, 3520, 3521, + 3522, 3526, 3539, 3559, 3573, 3586, 3609, 3627, 3645, 3663, + 3681, 3688, 3693, 3697, 3701, 3705, 3711, 3716, 3720, 3724, + 3730, 3734, 3739, 3743, 3748, 3752, 3756, 3762, 3768, 3775, + 3781, 3785, 3789, 3800, 3807, 3818, 3838, 3848, 3858, 3870, + 3887, 3906, 3930, 3958, 3964, 3968, 3972, 3984, 3989, 4001, + 4008, 4029, 4034, 4048, 4054, 4060, 4065, 4073, 4087, 4091, + 4110, 4126 }; #endif @@ -4702,19 +4700,19 @@ yyreduce: switch (yyn) { case 4: -#line 167 "Gmsh.y" +#line 165 "Gmsh.y" { yyerrok; return 1; ; break;} case 5: -#line 173 "Gmsh.y" +#line 171 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 6: -#line 174 "Gmsh.y" +#line 172 "Gmsh.y" { yyval.d = -yyvsp[0].d; ; break;} case 9: -#line 184 "Gmsh.y" +#line 182 "Gmsh.y" { yymsg(INFO, "Reading STL solid"); STL_Surf = Create_Surface(NEWSURFACE(), MSH_SURF_STL); @@ -4723,7 +4721,7 @@ case 9: ; break;} case 10: -#line 198 "Gmsh.y" +#line 196 "Gmsh.y" { STL_Surf->STL->Add_Facet(yyvsp[-12].d, yyvsp[-11].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-7].d, yyvsp[-6].d, @@ -4732,7 +4730,7 @@ case 10: ; break;} case 11: -#line 205 "Gmsh.y" +#line 203 "Gmsh.y" { if(CTX.geom.stl_create_elementary){ STL_Surf->STL->ReplaceDuplicate(); @@ -4747,79 +4745,79 @@ case 11: ; break;} case 14: -#line 227 "Gmsh.y" +#line 229 "Gmsh.y" { return 1; ; break;} case 15: -#line 228 "Gmsh.y" +#line 230 "Gmsh.y" { return 1; ; break;} case 16: -#line 229 "Gmsh.y" +#line 231 "Gmsh.y" { return 1; ; break;} case 17: -#line 234 "Gmsh.y" +#line 236 "Gmsh.y" { yymsg(INFO, "Reading Step Iso-10303-21 data"); Create_Step_Solid_BRep(); ; break;} case 18: -#line 239 "Gmsh.y" +#line 241 "Gmsh.y" { Resolve_BREP (); yymsg(INFO, "Read Step Iso-10303-21 data"); ; break;} case 22: -#line 250 "Gmsh.y" +#line 252 "Gmsh.y" { ; break;} case 23: -#line 253 "Gmsh.y" +#line 255 "Gmsh.y" { ; break;} case 24: -#line 257 "Gmsh.y" +#line 259 "Gmsh.y" { - ; + ; break;} case 25: -#line 263 "Gmsh.y" +#line 265 "Gmsh.y" { - Add_Cartesian_Point((int)yyvsp[-8].d, yyvsp[-4].c, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2]); + Add_Cartesian_Point((int)yyvsp[-8].d, yyvsp[-4].c, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2]); ; break;} case 26: -#line 269 "Gmsh.y" +#line 271 "Gmsh.y" { - Add_BSpline_Curve_With_Knots ((int)yyvsp[-22].d, yyvsp[-18].c, (int) yyvsp[-16].d, yyvsp[-14].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1.); + Add_BSpline_Curve_With_Knots ((int)yyvsp[-22].d, yyvsp[-18].c, (int) yyvsp[-16].d, yyvsp[-14].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1.); ; break;} case 27: -#line 276 "Gmsh.y" +#line 278 "Gmsh.y" { Add_BSpline_Surface_With_Knots ((int)yyvsp[-30].d, yyvsp[-26].c, (int) yyvsp[-24].d, (int) yyvsp[-22].d, yyvsp[-20].l, yyvsp[-10].l, yyvsp[-8].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1., 0., 1. ); ; break;} case 28: -#line 282 "Gmsh.y" +#line 284 "Gmsh.y" { Add_Edge_Curve ((int)yyvsp[-14].d, yyvsp[-10].c , (int)yyvsp[-8].d , (int)yyvsp[-6].d, (int)yyvsp[-4].d); ; break;} case 29: -#line 286 "Gmsh.y" +#line 288 "Gmsh.y" { Add_Face_Outer_Bound((int)yyvsp[-10].d, yyvsp[-6].c, (int)yyvsp[-4].d, yyvsp[-2].i, 1); ; break;} case 30: -#line 290 "Gmsh.y" +#line 292 "Gmsh.y" { // check the norm! Face_Bound : hole outside surface! yymsg(INFO, "Found a face bound"); @@ -4827,204 +4825,205 @@ case 30: ; break;} case 31: -#line 297 "Gmsh.y" +#line 299 "Gmsh.y" { Add_Oriented_Edge((int)yyvsp[-14].d, yyvsp[-10].c, (int)yyvsp[-4].d, yyvsp[-2].i); ; break;} case 32: -#line 301 "Gmsh.y" +#line 303 "Gmsh.y" { Add_Edge_Loop((int)yyvsp[-8].d, yyvsp[-4].c, yyvsp[-2].l); ; break;} case 33: -#line 306 "Gmsh.y" +#line 308 "Gmsh.y" { Add_Advanced_Face((int)yyvsp[-12].d, yyvsp[-8].c, yyvsp[-6].l, (int)yyvsp[-4].d, yyvsp[-2].i); ; break;} case 34: -#line 310 "Gmsh.y" +#line 312 "Gmsh.y" { Add_Vertex_Point((int)yyvsp[-8].d, yyvsp[-4].c, (int)yyvsp[-2].d); ; break;} case 35: -#line 314 "Gmsh.y" +#line 316 "Gmsh.y" { ; break;} case 36: -#line 318 "Gmsh.y" +#line 320 "Gmsh.y" { Add_Axis2_Placement3D ((int)yyvsp[-12].d, (int)yyvsp[-4].d, (int)yyvsp[-2].d, (int)yyvsp[-6].d); ; break;} case 37: -#line 322 "Gmsh.y" +#line 324 "Gmsh.y" { Add_Direction((int)yyvsp[-8].d , yyvsp[-4].c, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2]); ; break;} case 38: -#line 326 "Gmsh.y" +#line 328 "Gmsh.y" { Add_Plane((int)yyvsp[-8].d, yyvsp[-4].c, (int)yyvsp[-2].d); ; break;} case 39: -#line 330 "Gmsh.y" +#line 332 "Gmsh.y" { Add_Line ((int)yyvsp[-10].d, yyvsp[-6].c , (int) yyvsp[-4].d, (int)yyvsp[-2].d); ; break;} case 40: -#line 334 "Gmsh.y" +#line 336 "Gmsh.y" { yymsg(INFO, "Found a closed shell"); Add_Closed_Shell((int)yyvsp[-8].d, yyvsp[-4].c , yyvsp[-2].l); ; break;} case 41: -#line 340 "Gmsh.y" +#line 342 "Gmsh.y" { ; break;} case 42: -#line 343 "Gmsh.y" +#line 345 "Gmsh.y" { ; break;} case 43: -#line 346 "Gmsh.y" +#line 348 "Gmsh.y" { Add_Cylinder ((int)yyvsp[-10].d, yyvsp[-6].c , (int)yyvsp[-4].d, yyvsp[-2].d); ; break;} case 44: -#line 350 "Gmsh.y" +#line 352 "Gmsh.y" { Add_Cone ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d); ; break;} case 45: -#line 354 "Gmsh.y" +#line 356 "Gmsh.y" { Add_Torus ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d); ; break;} case 46: -#line 358 "Gmsh.y" +#line 360 "Gmsh.y" { Add_Circle((int) yyvsp[-10].d, yyvsp[-6].c, (int) yyvsp[-4].d, yyvsp[-2].d); ; break;} case 47: -#line 362 "Gmsh.y" +#line 364 "Gmsh.y" { Add_Ellipse((int) yyvsp[-12].d, yyvsp[-8].c, (int) yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d); ; break;} case 48: -#line 367 "Gmsh.y" +#line 369 "Gmsh.y" { ; break;} case 49: -#line 370 "Gmsh.y" +#line 372 "Gmsh.y" { ; break;} case 50: -#line 374 "Gmsh.y" +#line 376 "Gmsh.y" { ; break;} case 51: -#line 377 "Gmsh.y" +#line 379 "Gmsh.y" { ; break;} case 52: -#line 381 "Gmsh.y" +#line 383 "Gmsh.y" { ; break;} case 53: -#line 384 "Gmsh.y" +#line 386 "Gmsh.y" { ; break;} case 54: -#line 387 "Gmsh.y" +#line 389 "Gmsh.y" { ; break;} case 57: -#line 399 "Gmsh.y" +#line 401 "Gmsh.y" { return 1; ; break;} case 58: -#line 400 "Gmsh.y" +#line 402 "Gmsh.y" { return 1; ; break;} case 59: -#line 401 "Gmsh.y" +#line 403 "Gmsh.y" { return 1; ; break;} case 60: -#line 402 "Gmsh.y" +#line 404 "Gmsh.y" { return 1; ; break;} case 61: -#line 403 "Gmsh.y" +#line 405 "Gmsh.y" { List_Delete(yyvsp[0].l); return 1; ; break;} case 62: -#line 404 "Gmsh.y" +#line 406 "Gmsh.y" { List_Delete(yyvsp[0].l); return 1; ; break;} case 63: -#line 405 "Gmsh.y" +#line 407 "Gmsh.y" { return 1; ; break;} case 64: -#line 406 "Gmsh.y" +#line 408 "Gmsh.y" { return 1; ; break;} case 65: -#line 407 "Gmsh.y" +#line 409 "Gmsh.y" { return 1; ; break;} case 66: -#line 408 "Gmsh.y" +#line 410 "Gmsh.y" { List_Delete(yyvsp[0].l); return 1; ; break;} case 67: -#line 409 "Gmsh.y" +#line 411 "Gmsh.y" { return 1; ; break;} case 68: -#line 410 "Gmsh.y" +#line 412 "Gmsh.y" { return 1; ; break;} case 69: -#line 411 "Gmsh.y" +#line 413 "Gmsh.y" { return 1; ; break;} case 70: -#line 412 "Gmsh.y" +#line 414 "Gmsh.y" { return 1; ; break;} case 71: -#line 417 "Gmsh.y" +#line 419 "Gmsh.y" { Msg(DIRECT, yyvsp[-2].c); + Free(yyvsp[-2].c); ; break;} case 72: -#line 421 "Gmsh.y" +#line 424 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble(yyvsp[-4].c, yyvsp[-2].l, tmpstring); @@ -5034,27 +5033,30 @@ case 72: yymsg(GERROR, "%d extra argument%s in Printf", i, (i>1)?"s":""); else Msg(DIRECT, tmpstring); + Free(yyvsp[-4].c); List_Delete(yyvsp[-2].l); ; break;} case 73: -#line 438 "Gmsh.y" +#line 442 "Gmsh.y" { if(!strcmp(yyvsp[-5].c, "View") && !CheckViewErrorFlags(View)){ EndView(View, 0, yyname, yyvsp[-4].c); } + Free(yyvsp[-5].c); Free(yyvsp[-4].c); ; break;} case 74: -#line 444 "Gmsh.y" +#line 449 "Gmsh.y" { if(!strcmp(yyvsp[-7].c, "View") && !CheckViewErrorFlags(View)){ EndView(View, 0, yyname, yyvsp[-6].c); } + Free(yyvsp[-7].c); Free(yyvsp[-6].c); Free(yyvsp[-5].c); ; break;} case 75: -#line 453 "Gmsh.y" +#line 459 "Gmsh.y" { View = BeginView(1); for(int i = 0; i < VIEW_NB_ELEMENT_TYPES; i++){ @@ -5063,36 +5065,36 @@ case 75: ; break;} case 104: -#line 491 "Gmsh.y" +#line 497 "Gmsh.y" { List_Add(View->SP, &yyvsp[0].d); ; break;} case 105: -#line 493 "Gmsh.y" +#line 499 "Gmsh.y" { List_Add(View->SP, &yyvsp[0].d); ; break;} case 106: -#line 498 "Gmsh.y" +#line 504 "Gmsh.y" { List_Add(View->SP, &yyvsp[-5].d); List_Add(View->SP, &yyvsp[-3].d); List_Add(View->SP, &yyvsp[-1].d); ; break;} case 107: -#line 503 "Gmsh.y" +#line 509 "Gmsh.y" { View->NbSP++; ; break;} case 108: -#line 510 "Gmsh.y" +#line 516 "Gmsh.y" { List_Add(View->VP, &yyvsp[0].d); ; break;} case 109: -#line 512 "Gmsh.y" +#line 518 "Gmsh.y" { List_Add(View->VP, &yyvsp[0].d); ; break;} case 110: -#line 517 "Gmsh.y" +#line 523 "Gmsh.y" { List_Add(View->VP, &yyvsp[-5].d); List_Add(View->VP, &yyvsp[-3].d); List_Add(View->VP, &yyvsp[-1].d); @@ -5100,22 +5102,22 @@ case 110: ; break;} case 111: -#line 523 "Gmsh.y" +#line 529 "Gmsh.y" { if((List_Nbr(View->VP) - ntmp) % 3) ViewErrorFlags[1]++; View->NbVP++; ; break;} case 112: -#line 531 "Gmsh.y" +#line 537 "Gmsh.y" { List_Add(View->TP, &yyvsp[0].d); ; break;} case 113: -#line 533 "Gmsh.y" +#line 539 "Gmsh.y" { List_Add(View->TP, &yyvsp[0].d); ; break;} case 114: -#line 538 "Gmsh.y" +#line 544 "Gmsh.y" { List_Add(View->TP, &yyvsp[-5].d); List_Add(View->TP, &yyvsp[-3].d); List_Add(View->TP, &yyvsp[-1].d); @@ -5123,22 +5125,22 @@ case 114: ; break;} case 115: -#line 544 "Gmsh.y" +#line 550 "Gmsh.y" { if((List_Nbr(View->TP) - ntmp) % 9) ViewErrorFlags[2]++; View->NbTP++; ; break;} case 116: -#line 552 "Gmsh.y" +#line 558 "Gmsh.y" { List_Add(View->SL, &yyvsp[0].d); ; break;} case 117: -#line 554 "Gmsh.y" +#line 560 "Gmsh.y" { List_Add(View->SL, &yyvsp[0].d); ; break;} case 118: -#line 560 "Gmsh.y" +#line 566 "Gmsh.y" { List_Add(View->SL, &yyvsp[-11].d); List_Add(View->SL, &yyvsp[-5].d); List_Add(View->SL, &yyvsp[-9].d); List_Add(View->SL, &yyvsp[-3].d); @@ -5147,22 +5149,22 @@ case 118: ; break;} case 119: -#line 567 "Gmsh.y" +#line 573 "Gmsh.y" { if((List_Nbr(View->SL) - ntmp) % 2) ViewErrorFlags[3]++; View->NbSL++; ; break;} case 120: -#line 575 "Gmsh.y" +#line 581 "Gmsh.y" { List_Add(View->VL, &yyvsp[0].d); ; break;} case 121: -#line 577 "Gmsh.y" +#line 583 "Gmsh.y" { List_Add(View->VL, &yyvsp[0].d); ; break;} case 122: -#line 583 "Gmsh.y" +#line 589 "Gmsh.y" { List_Add(View->VL, &yyvsp[-11].d); List_Add(View->VL, &yyvsp[-5].d); List_Add(View->VL, &yyvsp[-9].d); List_Add(View->VL, &yyvsp[-3].d); @@ -5171,22 +5173,22 @@ case 122: ; break;} case 123: -#line 590 "Gmsh.y" +#line 596 "Gmsh.y" { if((List_Nbr(View->VL) - ntmp) % 6) ViewErrorFlags[4]++; View->NbVL++; ; break;} case 124: -#line 598 "Gmsh.y" +#line 604 "Gmsh.y" { List_Add(View->TL, &yyvsp[0].d); ; break;} case 125: -#line 600 "Gmsh.y" +#line 606 "Gmsh.y" { List_Add(View->TL, &yyvsp[0].d); ; break;} case 126: -#line 606 "Gmsh.y" +#line 612 "Gmsh.y" { List_Add(View->TL, &yyvsp[-11].d); List_Add(View->TL, &yyvsp[-5].d); List_Add(View->TL, &yyvsp[-9].d); List_Add(View->TL, &yyvsp[-3].d); @@ -5195,22 +5197,22 @@ case 126: ; break;} case 127: -#line 613 "Gmsh.y" +#line 619 "Gmsh.y" { if((List_Nbr(View->TL) - ntmp) % 18) ViewErrorFlags[5]++; View->NbTL++; ; break;} case 128: -#line 621 "Gmsh.y" +#line 627 "Gmsh.y" { List_Add(View->ST, &yyvsp[0].d); ; break;} case 129: -#line 623 "Gmsh.y" +#line 629 "Gmsh.y" { List_Add(View->ST, &yyvsp[0].d); ; break;} case 130: -#line 630 "Gmsh.y" +#line 636 "Gmsh.y" { List_Add(View->ST, &yyvsp[-17].d); List_Add(View->ST, &yyvsp[-11].d); List_Add(View->ST, &yyvsp[-5].d); @@ -5222,22 +5224,22 @@ case 130: ; break;} case 131: -#line 640 "Gmsh.y" +#line 646 "Gmsh.y" { if((List_Nbr(View->ST) - ntmp) % 3) ViewErrorFlags[6]++; View->NbST++; ; break;} case 132: -#line 648 "Gmsh.y" +#line 654 "Gmsh.y" { List_Add(View->VT, &yyvsp[0].d); ; break;} case 133: -#line 650 "Gmsh.y" +#line 656 "Gmsh.y" { List_Add(View->VT, &yyvsp[0].d); ; break;} case 134: -#line 657 "Gmsh.y" +#line 663 "Gmsh.y" { List_Add(View->VT, &yyvsp[-17].d); List_Add(View->VT, &yyvsp[-11].d); List_Add(View->VT, &yyvsp[-5].d); @@ -5249,22 +5251,22 @@ case 134: ; break;} case 135: -#line 667 "Gmsh.y" +#line 673 "Gmsh.y" { if((List_Nbr(View->VT) - ntmp) % 9) ViewErrorFlags[7]++; View->NbVT++; ; break;} case 136: -#line 675 "Gmsh.y" +#line 681 "Gmsh.y" { List_Add(View->TT, &yyvsp[0].d); ; break;} case 137: -#line 677 "Gmsh.y" +#line 683 "Gmsh.y" { List_Add(View->TT, &yyvsp[0].d); ; break;} case 138: -#line 684 "Gmsh.y" +#line 690 "Gmsh.y" { List_Add(View->TT, &yyvsp[-17].d); List_Add(View->TT, &yyvsp[-11].d); List_Add(View->TT, &yyvsp[-5].d); @@ -5276,22 +5278,22 @@ case 138: ; break;} case 139: -#line 694 "Gmsh.y" +#line 700 "Gmsh.y" { if((List_Nbr(View->TT) - ntmp) % 27) ViewErrorFlags[8]++; View->NbTT++; ; break;} case 140: -#line 702 "Gmsh.y" +#line 708 "Gmsh.y" { List_Add(View->SQ, &yyvsp[0].d); ; break;} case 141: -#line 704 "Gmsh.y" +#line 710 "Gmsh.y" { List_Add(View->SQ, &yyvsp[0].d); ; break;} case 142: -#line 712 "Gmsh.y" +#line 718 "Gmsh.y" { List_Add(View->SQ, &yyvsp[-23].d); List_Add(View->SQ, &yyvsp[-17].d); List_Add(View->SQ, &yyvsp[-11].d); List_Add(View->SQ, &yyvsp[-5].d); @@ -5303,22 +5305,22 @@ case 142: ; break;} case 143: -#line 722 "Gmsh.y" +#line 728 "Gmsh.y" { if((List_Nbr(View->SQ) - ntmp) % 4) ViewErrorFlags[9]++; View->NbSQ++; ; break;} case 144: -#line 730 "Gmsh.y" +#line 736 "Gmsh.y" { List_Add(View->VQ, &yyvsp[0].d); ; break;} case 145: -#line 732 "Gmsh.y" +#line 738 "Gmsh.y" { List_Add(View->VQ, &yyvsp[0].d); ; break;} case 146: -#line 740 "Gmsh.y" +#line 746 "Gmsh.y" { List_Add(View->VQ, &yyvsp[-23].d); List_Add(View->VQ, &yyvsp[-17].d); List_Add(View->VQ, &yyvsp[-11].d); List_Add(View->VQ, &yyvsp[-5].d); @@ -5330,22 +5332,22 @@ case 146: ; break;} case 147: -#line 750 "Gmsh.y" +#line 756 "Gmsh.y" { if((List_Nbr(View->VQ) - ntmp) % 12) ViewErrorFlags[10]++; View->NbVQ++; ; break;} case 148: -#line 758 "Gmsh.y" +#line 764 "Gmsh.y" { List_Add(View->TQ, &yyvsp[0].d); ; break;} case 149: -#line 760 "Gmsh.y" +#line 766 "Gmsh.y" { List_Add(View->TQ, &yyvsp[0].d); ; break;} case 150: -#line 768 "Gmsh.y" +#line 774 "Gmsh.y" { List_Add(View->TQ, &yyvsp[-23].d); List_Add(View->TQ, &yyvsp[-17].d); List_Add(View->TQ, &yyvsp[-11].d); List_Add(View->TQ, &yyvsp[-5].d); @@ -5357,22 +5359,22 @@ case 150: ; break;} case 151: -#line 778 "Gmsh.y" +#line 784 "Gmsh.y" { if((List_Nbr(View->TQ) - ntmp) % 36) ViewErrorFlags[11]++; View->NbTQ++; ; break;} case 152: -#line 786 "Gmsh.y" +#line 792 "Gmsh.y" { List_Add(View->SS, &yyvsp[0].d); ; break;} case 153: -#line 788 "Gmsh.y" +#line 794 "Gmsh.y" { List_Add(View->SS, &yyvsp[0].d); ; break;} case 154: -#line 796 "Gmsh.y" +#line 802 "Gmsh.y" { List_Add(View->SS, &yyvsp[-23].d); List_Add(View->SS, &yyvsp[-17].d); List_Add(View->SS, &yyvsp[-11].d); List_Add(View->SS, &yyvsp[-5].d); @@ -5384,22 +5386,22 @@ case 154: ; break;} case 155: -#line 806 "Gmsh.y" +#line 812 "Gmsh.y" { if((List_Nbr(View->SS) - ntmp) % 4) ViewErrorFlags[12]++; View->NbSS++; ; break;} case 156: -#line 814 "Gmsh.y" +#line 820 "Gmsh.y" { List_Add(View->VS, &yyvsp[0].d); ; break;} case 157: -#line 816 "Gmsh.y" +#line 822 "Gmsh.y" { List_Add(View->VS, &yyvsp[0].d); ; break;} case 158: -#line 824 "Gmsh.y" +#line 830 "Gmsh.y" { List_Add(View->VS, &yyvsp[-23].d); List_Add(View->VS, &yyvsp[-17].d); List_Add(View->VS, &yyvsp[-11].d); List_Add(View->VS, &yyvsp[-5].d); @@ -5411,22 +5413,22 @@ case 158: ; break;} case 159: -#line 834 "Gmsh.y" +#line 840 "Gmsh.y" { if((List_Nbr(View->VS) - ntmp) % 12) ViewErrorFlags[13]++; View->NbVS++; ; break;} case 160: -#line 842 "Gmsh.y" +#line 848 "Gmsh.y" { List_Add(View->TS, &yyvsp[0].d); ; break;} case 161: -#line 844 "Gmsh.y" +#line 850 "Gmsh.y" { List_Add(View->TS, &yyvsp[0].d); ; break;} case 162: -#line 852 "Gmsh.y" +#line 858 "Gmsh.y" { List_Add(View->TS, &yyvsp[-23].d); List_Add(View->TS, &yyvsp[-17].d); List_Add(View->TS, &yyvsp[-11].d); List_Add(View->TS, &yyvsp[-5].d); @@ -5438,22 +5440,22 @@ case 162: ; break;} case 163: -#line 862 "Gmsh.y" +#line 868 "Gmsh.y" { if((List_Nbr(View->TS) - ntmp) % 36) ViewErrorFlags[14]++; View->NbTS++; ; break;} case 164: -#line 870 "Gmsh.y" +#line 876 "Gmsh.y" { List_Add(View->SH, &yyvsp[0].d); ; break;} case 165: -#line 872 "Gmsh.y" +#line 878 "Gmsh.y" { List_Add(View->SH, &yyvsp[0].d); ; break;} case 166: -#line 884 "Gmsh.y" +#line 890 "Gmsh.y" { List_Add(View->SH, &yyvsp[-47].d); List_Add(View->SH, &yyvsp[-41].d); List_Add(View->SH, &yyvsp[-35].d); List_Add(View->SH, &yyvsp[-29].d); @@ -5471,22 +5473,22 @@ case 166: ; break;} case 167: -#line 900 "Gmsh.y" +#line 906 "Gmsh.y" { if((List_Nbr(View->SH) - ntmp) % 8) ViewErrorFlags[15]++; View->NbSH++; ; break;} case 168: -#line 908 "Gmsh.y" +#line 914 "Gmsh.y" { List_Add(View->VH, &yyvsp[0].d); ; break;} case 169: -#line 910 "Gmsh.y" +#line 916 "Gmsh.y" { List_Add(View->VH, &yyvsp[0].d); ; break;} case 170: -#line 922 "Gmsh.y" +#line 928 "Gmsh.y" { List_Add(View->VH, &yyvsp[-47].d); List_Add(View->VH, &yyvsp[-41].d); List_Add(View->VH, &yyvsp[-35].d); List_Add(View->VH, &yyvsp[-29].d); @@ -5504,22 +5506,22 @@ case 170: ; break;} case 171: -#line 938 "Gmsh.y" +#line 944 "Gmsh.y" { if((List_Nbr(View->VH) - ntmp) % 24) ViewErrorFlags[16]++; View->NbVH++; ; break;} case 172: -#line 946 "Gmsh.y" +#line 952 "Gmsh.y" { List_Add(View->TH, &yyvsp[0].d); ; break;} case 173: -#line 948 "Gmsh.y" +#line 954 "Gmsh.y" { List_Add(View->TH, &yyvsp[0].d); ; break;} case 174: -#line 960 "Gmsh.y" +#line 966 "Gmsh.y" { List_Add(View->TH, &yyvsp[-47].d); List_Add(View->TH, &yyvsp[-41].d); List_Add(View->TH, &yyvsp[-35].d); List_Add(View->TH, &yyvsp[-29].d); @@ -5537,22 +5539,22 @@ case 174: ; break;} case 175: -#line 976 "Gmsh.y" +#line 982 "Gmsh.y" { if((List_Nbr(View->TH) - ntmp) % 72) ViewErrorFlags[17]++; View->NbTH++; ; break;} case 176: -#line 984 "Gmsh.y" +#line 990 "Gmsh.y" { List_Add(View->SI, &yyvsp[0].d); ; break;} case 177: -#line 986 "Gmsh.y" +#line 992 "Gmsh.y" { List_Add(View->SI, &yyvsp[0].d); ; break;} case 178: -#line 996 "Gmsh.y" +#line 1002 "Gmsh.y" { List_Add(View->SI, &yyvsp[-35].d); List_Add(View->SI, &yyvsp[-29].d); List_Add(View->SI, &yyvsp[-23].d); List_Add(View->SI, &yyvsp[-17].d); @@ -5567,22 +5569,22 @@ case 178: ; break;} case 179: -#line 1009 "Gmsh.y" +#line 1015 "Gmsh.y" { if((List_Nbr(View->SI) - ntmp) % 6) ViewErrorFlags[18]++; View->NbSI++; ; break;} case 180: -#line 1017 "Gmsh.y" +#line 1023 "Gmsh.y" { List_Add(View->VI, &yyvsp[0].d); ; break;} case 181: -#line 1019 "Gmsh.y" +#line 1025 "Gmsh.y" { List_Add(View->VI, &yyvsp[0].d); ; break;} case 182: -#line 1029 "Gmsh.y" +#line 1035 "Gmsh.y" { List_Add(View->VI, &yyvsp[-35].d); List_Add(View->VI, &yyvsp[-29].d); List_Add(View->VI, &yyvsp[-23].d); List_Add(View->VI, &yyvsp[-17].d); @@ -5597,22 +5599,22 @@ case 182: ; break;} case 183: -#line 1042 "Gmsh.y" +#line 1048 "Gmsh.y" { if((List_Nbr(View->VI) - ntmp) % 18) ViewErrorFlags[19]++; View->NbVI++; ; break;} case 184: -#line 1050 "Gmsh.y" +#line 1056 "Gmsh.y" { List_Add(View->TI, &yyvsp[0].d); ; break;} case 185: -#line 1052 "Gmsh.y" +#line 1058 "Gmsh.y" { List_Add(View->TI, &yyvsp[0].d); ; break;} case 186: -#line 1062 "Gmsh.y" +#line 1068 "Gmsh.y" { List_Add(View->TI, &yyvsp[-35].d); List_Add(View->TI, &yyvsp[-29].d); List_Add(View->TI, &yyvsp[-23].d); List_Add(View->TI, &yyvsp[-17].d); @@ -5627,22 +5629,22 @@ case 186: ; break;} case 187: -#line 1075 "Gmsh.y" +#line 1081 "Gmsh.y" { if((List_Nbr(View->TI) - ntmp) % 54) ViewErrorFlags[20]++; View->NbTI++; ; break;} case 188: -#line 1083 "Gmsh.y" +#line 1089 "Gmsh.y" { List_Add(View->SY, &yyvsp[0].d); ; break;} case 189: -#line 1085 "Gmsh.y" +#line 1091 "Gmsh.y" { List_Add(View->SY, &yyvsp[0].d); ; break;} case 190: -#line 1094 "Gmsh.y" +#line 1100 "Gmsh.y" { List_Add(View->SY, &yyvsp[-29].d); List_Add(View->SY, &yyvsp[-23].d); List_Add(View->SY, &yyvsp[-17].d); List_Add(View->SY, &yyvsp[-11].d); @@ -5657,22 +5659,22 @@ case 190: ; break;} case 191: -#line 1107 "Gmsh.y" +#line 1113 "Gmsh.y" { if((List_Nbr(View->SY) - ntmp) % 5) ViewErrorFlags[21]++; View->NbSY++; ; break;} case 192: -#line 1115 "Gmsh.y" +#line 1121 "Gmsh.y" { List_Add(View->VY, &yyvsp[0].d); ; break;} case 193: -#line 1117 "Gmsh.y" +#line 1123 "Gmsh.y" { List_Add(View->VY, &yyvsp[0].d); ; break;} case 194: -#line 1126 "Gmsh.y" +#line 1132 "Gmsh.y" { List_Add(View->VY, &yyvsp[-29].d); List_Add(View->VY, &yyvsp[-23].d); List_Add(View->VY, &yyvsp[-17].d); List_Add(View->VY, &yyvsp[-11].d); @@ -5687,22 +5689,22 @@ case 194: ; break;} case 195: -#line 1139 "Gmsh.y" +#line 1145 "Gmsh.y" { if((List_Nbr(View->VY) - ntmp) % 15) ViewErrorFlags[22]++; View->NbVY++; ; break;} case 196: -#line 1147 "Gmsh.y" +#line 1153 "Gmsh.y" { List_Add(View->TY, &yyvsp[0].d); ; break;} case 197: -#line 1149 "Gmsh.y" +#line 1155 "Gmsh.y" { List_Add(View->TY, &yyvsp[0].d); ; break;} case 198: -#line 1158 "Gmsh.y" +#line 1164 "Gmsh.y" { List_Add(View->TY, &yyvsp[-29].d); List_Add(View->TY, &yyvsp[-23].d); List_Add(View->TY, &yyvsp[-17].d); List_Add(View->TY, &yyvsp[-11].d); @@ -5717,28 +5719,28 @@ case 198: ; break;} case 199: -#line 1171 "Gmsh.y" +#line 1177 "Gmsh.y" { if((List_Nbr(View->TY) - ntmp) % 45) ViewErrorFlags[23]++; View->NbTY++; ; break;} case 200: -#line 1179 "Gmsh.y" +#line 1185 "Gmsh.y" { for(int i = 0; i < (int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T2C, &yyvsp[0].c[i]); Free(yyvsp[0].c); ; break;} case 201: -#line 1184 "Gmsh.y" +#line 1190 "Gmsh.y" { for(int i = 0; i < (int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T2C, &yyvsp[0].c[i]); Free(yyvsp[0].c); ; break;} case 202: -#line 1192 "Gmsh.y" +#line 1198 "Gmsh.y" { List_Add(View->T2D, &yyvsp[-5].d); List_Add(View->T2D, &yyvsp[-3].d); List_Add(View->T2D, &yyvsp[-1].d); @@ -5747,27 +5749,27 @@ case 202: ; break;} case 203: -#line 1199 "Gmsh.y" +#line 1205 "Gmsh.y" { View->NbT2++; ; break;} case 204: -#line 1206 "Gmsh.y" +#line 1212 "Gmsh.y" { for(int i = 0; i < (int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T3C, &yyvsp[0].c[i]); Free(yyvsp[0].c); ; break;} case 205: -#line 1211 "Gmsh.y" +#line 1217 "Gmsh.y" { for(int i = 0; i < (int)strlen(yyvsp[0].c)+1; i++) List_Add(View->T3C, &yyvsp[0].c[i]); Free(yyvsp[0].c); ; break;} case 206: -#line 1219 "Gmsh.y" +#line 1225 "Gmsh.y" { List_Add(View->T3D, &yyvsp[-7].d); List_Add(View->T3D, &yyvsp[-5].d); List_Add(View->T3D, &yyvsp[-3].d); List_Add(View->T3D, &yyvsp[-1].d); @@ -5776,72 +5778,74 @@ case 206: ; break;} case 207: -#line 1226 "Gmsh.y" +#line 1232 "Gmsh.y" { View->NbT3++; ; break;} case 208: -#line 1234 "Gmsh.y" +#line 1240 "Gmsh.y" { View->adaptive = new Adaptive_Post_View(View, yyvsp[-5].l, yyvsp[-2].l); ; break;} case 209: -#line 1241 "Gmsh.y" +#line 1247 "Gmsh.y" { List_Add(View->Time, &yyvsp[0].d); ; break;} case 210: -#line 1243 "Gmsh.y" +#line 1249 "Gmsh.y" { List_Add(View->Time, &yyvsp[0].d); ; break;} case 211: -#line 1248 "Gmsh.y" +#line 1254 "Gmsh.y" { ; break;} case 212: -#line 1255 "Gmsh.y" +#line 1261 "Gmsh.y" { yyval.i = 0; ; break;} case 213: -#line 1256 "Gmsh.y" +#line 1262 "Gmsh.y" { yyval.i = 1; ; break;} case 214: -#line 1257 "Gmsh.y" +#line 1263 "Gmsh.y" { yyval.i = 2; ; break;} case 215: -#line 1258 "Gmsh.y" +#line 1264 "Gmsh.y" { yyval.i = 3; ; break;} case 216: -#line 1259 "Gmsh.y" +#line 1265 "Gmsh.y" { yyval.i = 4; ; break;} case 217: -#line 1263 "Gmsh.y" +#line 1269 "Gmsh.y" { yyval.i = 1; ; break;} case 218: -#line 1264 "Gmsh.y" +#line 1270 "Gmsh.y" { yyval.i = -1; ; break;} case 219: -#line 1272 "Gmsh.y" +#line 1278 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-3].c; Symbol *pSymbol; if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ - TheSymbol.val = List_Create(1, 1, sizeof(double)); if(!yyvsp[-2].i){ + TheSymbol.val = List_Create(1, 1, sizeof(double)); List_Put(TheSymbol.val, 0, &yyvsp[-1].d); Tree_Add(Symbol_T, &TheSymbol); } - else + else{ yymsg(GERROR, "Unknown variable '%s'", yyvsp[-3].c); + Free(yyvsp[-3].c); + } } else{ double *pd = (double*)List_Pointer_Fast(pSymbol->val, 0); @@ -5855,23 +5859,26 @@ case 219: else yymsg(GERROR, "Division by zero in '%s /= %g'", yyvsp[-3].c, yyvsp[-1].d); break; } + Free(yyvsp[-3].c); } ; break;} case 220: -#line 1300 "Gmsh.y" +#line 1309 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-6].c; Symbol *pSymbol; if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ - TheSymbol.val = List_Create(5, 5, sizeof(double)); if(!yyvsp[-2].i){ + TheSymbol.val = List_Create(5, 5, sizeof(double)); List_Put(TheSymbol.val, (int)yyvsp[-4].d, &yyvsp[-1].d); Tree_Add(Symbol_T, &TheSymbol); } - else + else{ yymsg(GERROR, "Unknown variable '%s'", yyvsp[-6].c); + Free(yyvsp[-6].c); + } } else{ double *pd; @@ -5893,29 +5900,34 @@ case 220: else yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-6].c, (int)yyvsp[-4].d); } + Free(yyvsp[-6].c); } ; break;} case 221: -#line 1336 "Gmsh.y" +#line 1348 "Gmsh.y" { - if(List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-1].l)) + if(List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-1].l)){ yymsg(GERROR, "Incompatible array dimensions in affectation"); + Free(yyvsp[-8].c); + } else{ Symbol TheSymbol; TheSymbol.Name = yyvsp[-8].c; Symbol *pSymbol; if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ - TheSymbol.val = List_Create(5, 5, sizeof(double)); if(!yyvsp[-2].i){ + TheSymbol.val = List_Create(5, 5, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[-5].l); i++){ List_Put(TheSymbol.val, (int)(*(double*)List_Pointer(yyvsp[-5].l, i)), (double*)List_Pointer(yyvsp[-1].l, i)); } Tree_Add(Symbol_T, &TheSymbol); } - else + else{ yymsg(GERROR, "Unknown variable '%s'", yyvsp[-8].c); + Free(yyvsp[-8].c); + } } else{ for(int i = 0; i < List_Nbr(yyvsp[-5].l); i++){ @@ -5941,6 +5953,7 @@ case 221: yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-8].c, j); } } + Free(yyvsp[-8].c); } } List_Delete(yyvsp[-5].l); @@ -5948,7 +5961,7 @@ case 221: ; break;} case 222: -#line 1385 "Gmsh.y" +#line 1402 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-5].c; @@ -5961,12 +5974,13 @@ case 222: else{ List_Reset(pSymbol->val); List_Copy(yyvsp[-1].l, pSymbol->val); + Free(yyvsp[-5].c); } List_Delete(yyvsp[-1].l); ; break;} case 223: -#line 1401 "Gmsh.y" +#line 1419 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-2].c; @@ -5974,11 +5988,12 @@ case 223: if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) yymsg(GERROR, "Unknown variable '%s'", yyvsp[-2].c); else - *(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[-1].i; + *(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[-1].i; + Free(yyvsp[-2].c); ; break;} case 224: -#line 1411 "Gmsh.y" +#line 1430 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-5].c; @@ -5992,10 +6007,11 @@ case 224: else yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-5].c, (int)yyvsp[-3].d); } + Free(yyvsp[-5].c); ; break;} case 225: -#line 1429 "Gmsh.y" +#line 1449 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -6007,10 +6023,11 @@ case 225: else pStrOpt(0, GMSH_SET|GMSH_GUI, yyvsp[-1].c); } + Free(yyvsp[-5].c); Free(yyvsp[-3].c); //FIXME: somtimes leak $5 ; break;} case 226: -#line 1442 "Gmsh.y" +#line 1463 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -6022,10 +6039,11 @@ case 226: else pStrOpt((int)yyvsp[-6].d, GMSH_SET|GMSH_GUI, yyvsp[-1].c); } + Free(yyvsp[-8].c); Free(yyvsp[-3].c); //FIXME: somtimes leak $8 ; break;} case 227: -#line 1458 "Gmsh.y" +#line 1480 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -6049,10 +6067,11 @@ case 227: pNumOpt(0, GMSH_SET|GMSH_GUI, d); } } + Free(yyvsp[-5].c); Free(yyvsp[-3].c); ; break;} case 228: -#line 1483 "Gmsh.y" +#line 1506 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -6077,10 +6096,11 @@ case 228: pNumOpt((int)yyvsp[-6].d, GMSH_SET|GMSH_GUI, d); } } + Free(yyvsp[-8].c); Free(yyvsp[-3].c); ; break;} case 229: -#line 1509 "Gmsh.y" +#line 1533 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -6092,10 +6112,11 @@ case 229: else pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+yyvsp[-1].i); } + Free(yyvsp[-4].c); Free(yyvsp[-2].c); ; break;} case 230: -#line 1522 "Gmsh.y" +#line 1547 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -6107,10 +6128,11 @@ case 230: else pNumOpt((int)yyvsp[-5].d, GMSH_SET|GMSH_GUI, pNumOpt((int)yyvsp[-5].d, GMSH_GET, 0)+yyvsp[-1].i); } + Free(yyvsp[-7].c); Free(yyvsp[-2].c); ; break;} case 231: -#line 1538 "Gmsh.y" +#line 1564 "Gmsh.y" { unsigned int (*pColOpt)(int num, int action, unsigned int value); StringXColor *pColCat; @@ -6122,10 +6144,11 @@ case 231: else pColOpt(0, GMSH_SET|GMSH_GUI, yyvsp[-1].u); } + Free(yyvsp[-7].c); Free(yyvsp[-3].c); ; break;} case 232: -#line 1551 "Gmsh.y" +#line 1578 "Gmsh.y" { unsigned int (*pColOpt)(int num, int action, unsigned int value); StringXColor *pColCat; @@ -6137,10 +6160,11 @@ case 232: else pColOpt((int)yyvsp[-8].d, GMSH_SET|GMSH_GUI, yyvsp[-1].u); } + Free(yyvsp[-10].c); Free(yyvsp[-3].c); ; break;} case 233: -#line 1567 "Gmsh.y" +#line 1595 "Gmsh.y" { GmshColorTable *ct = Get_ColorTable(0); if(!ct) @@ -6157,11 +6181,12 @@ case 233: ct->table[1] = ct->table[0]; } } + Free(yyvsp[-5].c); List_Delete(yyvsp[-1].l); ; break;} case 234: -#line 1586 "Gmsh.y" +#line 1615 "Gmsh.y" { GmshColorTable *ct = Get_ColorTable((int)yyvsp[-6].d); if(!ct) @@ -6178,11 +6203,12 @@ case 234: ct->table[1] = ct->table[0]; } } + Free(yyvsp[-8].c); List_Delete(yyvsp[-1].l); ; break;} case 235: -#line 1608 "Gmsh.y" +#line 1638 "Gmsh.y" { try { GMSH_PluginManager::instance()->setPluginOption(yyvsp[-6].c, yyvsp[-3].c, yyvsp[-1].d); @@ -6190,10 +6216,11 @@ case 235: catch (...) { yymsg(GERROR, "Unknown option '%s' or plugin '%s'", yyvsp[-3].c, yyvsp[-6].c); } + Free(yyvsp[-6].c); Free(yyvsp[-3].c); ; break;} case 236: -#line 1617 "Gmsh.y" +#line 1648 "Gmsh.y" { try { GMSH_PluginManager::instance()->setPluginOption(yyvsp[-6].c, yyvsp[-3].c, yyvsp[-1].c); @@ -6201,10 +6228,11 @@ case 236: catch (...) { yymsg(GERROR, "Unknown option '%s' or plugin '%s'", yyvsp[-3].c, yyvsp[-6].c); } + Free(yyvsp[-6].c); Free(yyvsp[-3].c); // FIXME: sometimes leak $8 ; break;} case 237: -#line 1635 "Gmsh.y" +#line 1667 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindPoint(num, THEM)){ @@ -6222,7 +6250,7 @@ case 237: ; break;} case 238: -#line 1651 "Gmsh.y" +#line 1683 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindPhysicalGroup(num, MSH_PHYSICAL_POINT, THEM)){ @@ -6240,7 +6268,7 @@ case 238: ; break;} case 239: -#line 1667 "Gmsh.y" +#line 1699 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-9].l); i++){ double p; @@ -6261,7 +6289,7 @@ case 239: ; break;} case 240: -#line 1686 "Gmsh.y" +#line 1718 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -6279,7 +6307,7 @@ case 240: ; break;} case 241: -#line 1705 "Gmsh.y" +#line 1737 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindCurve(num, THEM)){ @@ -6299,7 +6327,7 @@ case 241: ; break;} case 242: -#line 1723 "Gmsh.y" +#line 1755 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindCurve(num, THEM)){ @@ -6319,7 +6347,7 @@ case 242: ; break;} case 243: -#line 1741 "Gmsh.y" +#line 1773 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindCurve(num, THEM)){ @@ -6339,7 +6367,7 @@ case 243: ; break;} case 244: -#line 1759 "Gmsh.y" +#line 1791 "Gmsh.y" { int num = (int)yyvsp[-6].d; if(FindCurve(num, THEM)){ @@ -6367,7 +6395,7 @@ case 244: ; break;} case 245: -#line 1785 "Gmsh.y" +#line 1817 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindCurve(num, THEM)){ @@ -6387,7 +6415,7 @@ case 245: ; break;} case 246: -#line 1803 "Gmsh.y" +#line 1835 "Gmsh.y" { int num = (int)yyvsp[-6].d; if(FindCurve(num, THEM)){ @@ -6415,7 +6443,7 @@ case 246: ; break;} case 247: -#line 1830 "Gmsh.y" +#line 1862 "Gmsh.y" { int num = (int)yyvsp[-14].d; if(FindCurve(num, THEM)){ @@ -6430,12 +6458,13 @@ case 247: Tree_Add(THEM->Curves, &c); CreateReversedCurve(THEM, c); } + Free(yyvsp[-6].c); Free(yyvsp[-4].c); Free(yyvsp[-2].c); yyval.s.Type = MSH_SEGM_PARAMETRIC; yyval.s.Num = num; ; break;} case 248: -#line 1848 "Gmsh.y" +#line 1881 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(List_Nbr(yyvsp[-1].l) < 4){ @@ -6461,7 +6490,7 @@ case 248: ; break;} case 249: -#line 1872 "Gmsh.y" +#line 1905 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(List_Nbr(yyvsp[-1].l) < 4){ @@ -6487,7 +6516,7 @@ case 249: ; break;} case 250: -#line 1896 "Gmsh.y" +#line 1929 "Gmsh.y" { int num = (int)yyvsp[-8].d; if(List_Nbr(yyvsp[-5].l) + (int)yyvsp[-1].d + 1 != List_Nbr(yyvsp[-3].l)){ @@ -6515,7 +6544,7 @@ case 250: ; break;} case 251: -#line 1922 "Gmsh.y" +#line 1955 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindEdgeLoop(num, THEM)){ @@ -6534,7 +6563,7 @@ case 251: ; break;} case 252: -#line 1939 "Gmsh.y" +#line 1972 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-9].l); i++){ double p; @@ -6554,7 +6583,7 @@ case 252: ; break;} case 253: -#line 1957 "Gmsh.y" +#line 1990 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindPhysicalGroup(num, MSH_PHYSICAL_LINE, THEM)){ @@ -6572,7 +6601,7 @@ case 253: ; break;} case 254: -#line 1976 "Gmsh.y" +#line 2009 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindSurface(num, THEM)){ @@ -6593,7 +6622,7 @@ case 254: ; break;} case 255: -#line 1995 "Gmsh.y" +#line 2028 "Gmsh.y" { int num = (int)yyvsp[-4].d, type = 0; if(FindSurface(num, THEM)){ @@ -6634,7 +6663,7 @@ case 255: ; break;} case 256: -#line 2034 "Gmsh.y" +#line 2067 "Gmsh.y" { int num = (int)yyvsp[-8].d; Surface *support = FindSurface((int)yyvsp[-4].d, THEM); @@ -6661,7 +6690,7 @@ case 256: ; break;} case 257: -#line 2060 "Gmsh.y" +#line 2093 "Gmsh.y" { int num = (int)yyvsp[-10].d, type = 0; Surface *s = FindSurface(num, THEM); @@ -6682,7 +6711,7 @@ case 257: ; break;} case 258: -#line 2082 "Gmsh.y" +#line 2115 "Gmsh.y" { int num = (int)yyvsp[-10].d, type = 0; Surface *s = FindSurface(num, THEM); @@ -6699,7 +6728,7 @@ case 258: ; break;} case 259: -#line 2099 "Gmsh.y" +#line 2132 "Gmsh.y" { int num = (int)yyvsp[-16].d; if(FindSurface(num, THEM)){ @@ -6718,7 +6747,7 @@ case 259: ; break;} case 260: -#line 2118 "Gmsh.y" +#line 2151 "Gmsh.y" { int num = (int)yyvsp[-16].d; if(FindSurface(num, THEM)){ @@ -6737,7 +6766,7 @@ case 260: ; break;} case 261: -#line 2135 "Gmsh.y" +#line 2168 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindSurfaceLoop(num, THEM)){ @@ -6755,7 +6784,7 @@ case 261: ; break;} case 262: -#line 2151 "Gmsh.y" +#line 2184 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE, THEM)){ @@ -6773,7 +6802,7 @@ case 262: ; break;} case 263: -#line 2170 "Gmsh.y" +#line 2203 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindVolume(num, THEM)){ @@ -6792,7 +6821,7 @@ case 263: ; break;} case 264: -#line 2187 "Gmsh.y" +#line 2220 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindVolume(num, THEM)){ @@ -6811,7 +6840,7 @@ case 264: ; break;} case 265: -#line 2204 "Gmsh.y" +#line 2237 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME, THEM)){ @@ -6829,59 +6858,59 @@ case 265: ; break;} case 266: -#line 2225 "Gmsh.y" +#line 2258 "Gmsh.y" { TranslateShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-1].l, 1); yyval.l = yyvsp[-1].l; ; break;} case 267: -#line 2230 "Gmsh.y" +#line 2263 "Gmsh.y" { RotateShapes(yyvsp[-8].v[0], yyvsp[-8].v[1], yyvsp[-8].v[2], yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, yyvsp[-1].l, 1); yyval.l = yyvsp[-1].l; ; break;} case 268: -#line 2235 "Gmsh.y" +#line 2268 "Gmsh.y" { SymmetryShapes(yyvsp[-3].v[0], yyvsp[-3].v[1], yyvsp[-3].v[2], yyvsp[-3].v[3], yyvsp[-1].l, 1); yyval.l = yyvsp[-1].l; ; break;} case 269: -#line 2240 "Gmsh.y" +#line 2273 "Gmsh.y" { DilatShapes(yyvsp[-6].v[0], yyvsp[-6].v[1], yyvsp[-6].v[2], yyvsp[-4].d, yyvsp[-1].l, 1); yyval.l = yyvsp[-1].l; ; break;} case 270: -#line 2247 "Gmsh.y" +#line 2280 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} case 271: -#line 2248 "Gmsh.y" +#line 2281 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} case 272: -#line 2249 "Gmsh.y" +#line 2282 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} case 273: -#line 2254 "Gmsh.y" +#line 2287 "Gmsh.y" { yyval.l = List_Create(3, 3, sizeof(Shape)); ; break;} case 274: -#line 2258 "Gmsh.y" +#line 2291 "Gmsh.y" { List_Add(yyval.l, &yyvsp[0].s); ; break;} case 275: -#line 2262 "Gmsh.y" +#line 2295 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){ double d; @@ -6899,7 +6928,7 @@ case 275: ; break;} case 276: -#line 2278 "Gmsh.y" +#line 2311 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){ double d; @@ -6917,7 +6946,7 @@ case 276: ; break;} case 277: -#line 2294 "Gmsh.y" +#line 2327 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){ double d; @@ -6935,7 +6964,7 @@ case 277: ; break;} case 278: -#line 2310 "Gmsh.y" +#line 2343 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){ double d; @@ -6953,7 +6982,7 @@ case 278: ; break;} case 279: -#line 2331 "Gmsh.y" +#line 2364 "Gmsh.y" { yyval.l = List_Create(3, 3, sizeof(Shape)); for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ @@ -6968,14 +6997,15 @@ case 279: ; break;} case 280: -#line 2344 "Gmsh.y" +#line 2377 "Gmsh.y" { if(!strcmp(yyvsp[-4].c, "View")) DuplicateView((int)yyvsp[-2].d, 0); + Free(yyvsp[-4].c); yyval.l = NULL; ; break;} case 281: -#line 2355 "Gmsh.y" +#line 2389 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ Shape TheShape; @@ -6986,7 +7016,7 @@ case 281: ; break;} case 282: -#line 2364 "Gmsh.y" +#line 2398 "Gmsh.y" { if(!strcmp(yyvsp[-4].c, "View")){ RemoveViewByIndex((int)yyvsp[-2].d); @@ -6994,10 +7024,11 @@ case 282: else{ yymsg(GERROR, "Unknown command 'Delete %s'", yyvsp[-4].c); } + Free(yyvsp[-4].c); ; break;} case 283: -#line 2373 "Gmsh.y" +#line 2408 "Gmsh.y" { if(!strcmp(yyvsp[-1].c, "Meshes") || !strcmp(yyvsp[-1].c, "All")){ Init_Mesh(THEM); @@ -7005,10 +7036,11 @@ case 283: else{ yymsg(GERROR, "Unknown command 'Delete %s'", yyvsp[-1].c); } + Free(yyvsp[-1].c); ; break;} case 284: -#line 2382 "Gmsh.y" +#line 2418 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Empty") && !strcmp(yyvsp[-1].c, "Views")){ for(int i = List_Nbr(CTX.post.list) - 1; i >= 0; i--){ @@ -7020,10 +7052,11 @@ case 284: else{ yymsg(GERROR, "Unknown command 'Delete %s %s'", yyvsp[-2].c, yyvsp[-1].c); } + Free(yyvsp[-2].c); Free(yyvsp[-1].c); ; break;} case 285: -#line 2400 "Gmsh.y" +#line 2437 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ Shape TheShape; @@ -7034,23 +7067,25 @@ case 285: ; break;} case 286: -#line 2414 "Gmsh.y" +#line 2451 "Gmsh.y" { int m = (CTX.visibility_mode == 2) ? VIS_MESH : ((CTX.visibility_mode == 1) ? VIS_GEOM : VIS_GEOM|VIS_MESH); for(int i = 2; i < 6; i++) SetVisibilityByNumber(yyvsp[-1].c, i, m); + Free(yyvsp[-1].c); ; break;} case 287: -#line 2421 "Gmsh.y" +#line 2459 "Gmsh.y" { for(int i = 2; i < 6; i++) SetVisibilityByNumber(yyvsp[-1].c, i, 0); + Free(yyvsp[-1].c); ; break;} case 288: -#line 2426 "Gmsh.y" +#line 2465 "Gmsh.y" { int m = (CTX.visibility_mode == 2) ? VIS_MESH : ((CTX.visibility_mode == 1) ? VIS_GEOM : VIS_GEOM|VIS_MESH); @@ -7063,7 +7098,7 @@ case 288: ; break;} case 289: -#line 2437 "Gmsh.y" +#line 2476 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ Shape TheShape; @@ -7074,7 +7109,7 @@ case 289: ; break;} case 290: -#line 2451 "Gmsh.y" +#line 2490 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Include")){ char tmpstring[1024]; @@ -7116,10 +7151,11 @@ case 290: else{ yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c); } + Free(yyvsp[-2].c); Free(yyvsp[-1].c); ; break;} case 291: -#line 2494 "Gmsh.y" +#line 2534 "Gmsh.y" { if(!strcmp(yyvsp[-6].c, "Save") && !strcmp(yyvsp[-5].c, "View")){ Post_View **vv = (Post_View **)List_Pointer_Test(CTX.post.list, (int)yyvsp[-3].d); @@ -7132,10 +7168,11 @@ case 291: else{ yymsg(GERROR, "Unknown command '%s'", yyvsp[-6].c); } + Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-1].c); ; break;} case 292: -#line 2508 "Gmsh.y" +#line 2549 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Sleep")){ long sleep_time = GetTime(); @@ -7149,21 +7186,23 @@ case 292: else{ yymsg(GERROR, "Unknown command '%s'", yyvsp[-2].c); } + Free(yyvsp[-2].c); ; break;} case 293: -#line 2523 "Gmsh.y" +#line 2565 "Gmsh.y" { - try { - GMSH_PluginManager::instance()->action(yyvsp[-4].c, yyvsp[-1].c, 0); - } - catch(...) { - yymsg(GERROR, "Unknown action '%s' or plugin '%s'", yyvsp[-1].c, yyvsp[-4].c); - } - ; + try { + GMSH_PluginManager::instance()->action(yyvsp[-4].c, yyvsp[-1].c, 0); + } + catch(...) { + yymsg(GERROR, "Unknown action '%s' or plugin '%s'", yyvsp[-1].c, yyvsp[-4].c); + } + Free(yyvsp[-4].c); Free(yyvsp[-1].c); + ; break;} case 294: -#line 2532 "Gmsh.y" +#line 2575 "Gmsh.y" { // for backward compatibility if(!strcmp(yyvsp[-1].c, "Views")) @@ -7172,28 +7211,29 @@ case 294: CombineViews(1, 2, CTX.post.combine_remove_orig); else yymsg(GERROR, "Unknown 'Combine' command"); + Free(yyvsp[-1].c); ; break;} case 295: -#line 2542 "Gmsh.y" +#line 2586 "Gmsh.y" { exit(0); ; break;} case 296: -#line 2546 "Gmsh.y" +#line 2590 "Gmsh.y" { SetBoundingBox(); ; break;} case 297: -#line 2550 "Gmsh.y" +#line 2594 "Gmsh.y" { SetBoundingBox(yyvsp[-12].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d); ; break;} case 298: -#line 2554 "Gmsh.y" +#line 2598 "Gmsh.y" { #if defined(HAVE_FLTK) if(!CTX.batch) // we're in interactive mode @@ -7202,12 +7242,12 @@ case 298: ; break;} case 299: -#line 2567 "Gmsh.y" +#line 2611 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d; LoopControlVariablesTab[ImbricatedLoop][2] = 1.0; - LoopControlVariablesNameTab[ImbricatedLoop] = ""; + LoopControlVariablesNameTab[ImbricatedLoop] = NULL; fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]); yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno; ImbricatedLoop++; @@ -7219,12 +7259,12 @@ case 299: ; break;} case 300: -#line 2582 "Gmsh.y" +#line 2626 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d; LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d; - LoopControlVariablesNameTab[ImbricatedLoop] = ""; + LoopControlVariablesNameTab[ImbricatedLoop] = NULL; fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]); yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno; ImbricatedLoop++; @@ -7237,7 +7277,7 @@ case 300: ; break;} case 301: -#line 2598 "Gmsh.y" +#line 2642 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d; @@ -7265,7 +7305,7 @@ case 301: ; break;} case 302: -#line 2624 "Gmsh.y" +#line 2668 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d; @@ -7294,7 +7334,7 @@ case 302: ; break;} case 303: -#line 2651 "Gmsh.y" +#line 2695 "Gmsh.y" { if(ImbricatedLoop <= 0){ yymsg(GERROR, "Invalid For/EndFor loop"); @@ -7308,7 +7348,7 @@ case 303: if(do_next){ LoopControlVariablesTab[ImbricatedLoop-1][0] += LoopControlVariablesTab[ImbricatedLoop-1][2]; - if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){ + if(LoopControlVariablesNameTab[ImbricatedLoop-1]){ Symbol TheSymbol; TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1]; Symbol *pSymbol; @@ -7328,40 +7368,42 @@ case 303: ; break;} case 304: -#line 2683 "Gmsh.y" +#line 2727 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction(yyvsp[0].c, yyin, yyname, yylineno)) yymsg(GERROR, "Redefinition of function %s", yyvsp[0].c); skip_until(NULL, "Return"); + //FIXME: wee leak $2 ; break;} case 305: -#line 2689 "Gmsh.y" +#line 2734 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction(&yyin, yyname, yylineno)) yymsg(GERROR, "Error while exiting function"); ; break;} case 306: -#line 2694 "Gmsh.y" +#line 2739 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c, &yyin, yyname, yylineno)) yymsg(GERROR, "Unknown function %s", yyvsp[-1].c); + //FIXME: wee leak $2 ; break;} case 307: -#line 2699 "Gmsh.y" +#line 2745 "Gmsh.y" { if(!yyvsp[-1].d) skip_until("If", "EndIf"); ; break;} case 308: -#line 2703 "Gmsh.y" +#line 2749 "Gmsh.y" { ; break;} case 309: -#line 2714 "Gmsh.y" +#line 2760 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7379,7 +7421,7 @@ case 309: ; break;} case 310: -#line 2730 "Gmsh.y" +#line 2776 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7397,7 +7439,7 @@ case 310: ; break;} case 311: -#line 2746 "Gmsh.y" +#line 2792 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7415,14 +7457,14 @@ case 311: ; break;} case 312: -#line 2762 "Gmsh.y" +#line 2808 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 313: -#line 2767 "Gmsh.y" +#line 2813 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7440,14 +7482,14 @@ case 313: ; break;} case 314: -#line 2783 "Gmsh.y" +#line 2829 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 315: -#line 2788 "Gmsh.y" +#line 2834 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7465,14 +7507,14 @@ case 315: ; break;} case 316: -#line 2804 "Gmsh.y" +#line 2850 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 317: -#line 2809 "Gmsh.y" +#line 2855 "Gmsh.y" { Curve *pc, *prc; Shape TheShape; @@ -7490,7 +7532,7 @@ case 317: ; break;} case 318: -#line 2827 "Gmsh.y" +#line 2873 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7515,7 +7557,7 @@ case 318: ; break;} case 319: -#line 2850 "Gmsh.y" +#line 2896 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7540,7 +7582,7 @@ case 319: ; break;} case 320: -#line 2873 "Gmsh.y" +#line 2919 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7565,14 +7607,14 @@ case 320: ; break;} case 321: -#line 2896 "Gmsh.y" +#line 2942 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 322: -#line 2901 "Gmsh.y" +#line 2947 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7597,14 +7639,14 @@ case 322: ; break;} case 323: -#line 2924 "Gmsh.y" +#line 2970 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 324: -#line 2929 "Gmsh.y" +#line 2975 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7629,14 +7671,14 @@ case 324: ; break;} case 325: -#line 2952 "Gmsh.y" +#line 2998 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 326: -#line 2957 "Gmsh.y" +#line 3003 "Gmsh.y" { Surface *ps; Shape TheShape; @@ -7661,7 +7703,7 @@ case 326: ; break;} case 327: -#line 2983 "Gmsh.y" +#line 3029 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7686,7 +7728,7 @@ case 327: ; break;} case 328: -#line 3006 "Gmsh.y" +#line 3052 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7711,7 +7753,7 @@ case 328: ; break;} case 329: -#line 3029 "Gmsh.y" +#line 3075 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7736,14 +7778,14 @@ case 329: ; break;} case 330: -#line 3052 "Gmsh.y" +#line 3098 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 331: -#line 3057 "Gmsh.y" +#line 3103 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7768,14 +7810,14 @@ case 331: ; break;} case 332: -#line 3080 "Gmsh.y" +#line 3126 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 333: -#line 3086 "Gmsh.y" +#line 3132 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7800,14 +7842,14 @@ case 333: ; break;} case 334: -#line 3109 "Gmsh.y" +#line 3155 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} case 335: -#line 3115 "Gmsh.y" +#line 3161 "Gmsh.y" { Volume *pv; Shape TheShape; @@ -7832,17 +7874,17 @@ case 335: ; break;} case 336: -#line 3141 "Gmsh.y" +#line 3187 "Gmsh.y" { ; break;} case 337: -#line 3144 "Gmsh.y" +#line 3190 "Gmsh.y" { ; break;} case 338: -#line 3150 "Gmsh.y" +#line 3196 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -7870,7 +7912,7 @@ case 338: ; break;} case 339: -#line 3176 "Gmsh.y" +#line 3222 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -7896,13 +7938,13 @@ case 339: ; break;} case 340: -#line 3200 "Gmsh.y" +#line 3246 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} case 341: -#line 3209 "Gmsh.y" +#line 3255 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -7922,7 +7964,7 @@ case 341: ; break;} case 342: -#line 3227 "Gmsh.y" +#line 3273 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){ double d; @@ -7942,7 +7984,7 @@ case 342: ; break;} case 343: -#line 3245 "Gmsh.y" +#line 3291 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){ double d; @@ -7962,7 +8004,7 @@ case 343: ; break;} case 344: -#line 3263 "Gmsh.y" +#line 3309 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d, THEM); if(!s) @@ -7991,7 +8033,7 @@ case 344: ; break;} case 345: -#line 3290 "Gmsh.y" +#line 3336 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d, THEM); if(!s) @@ -8019,7 +8061,7 @@ case 345: ; break;} case 346: -#line 3316 "Gmsh.y" +#line 3362 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d, THEM); if(!v) @@ -8047,7 +8089,7 @@ case 346: ; break;} case 347: -#line 3342 "Gmsh.y" +#line 3388 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -8063,7 +8105,7 @@ case 347: ; break;} case 348: -#line 3356 "Gmsh.y" +#line 3402 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ double d; @@ -8078,71 +8120,71 @@ case 348: ; break;} case 349: -#line 3375 "Gmsh.y" +#line 3421 "Gmsh.y" { ReplaceAllDuplicates(THEM); ; break;} case 350: -#line 3379 "Gmsh.y" +#line 3425 "Gmsh.y" { IntersectAllSegmentsTogether(); ; break;} case 351: -#line 3388 "Gmsh.y" +#line 3434 "Gmsh.y" {yyval.i = 1;; break;} case 352: -#line 3389 "Gmsh.y" +#line 3435 "Gmsh.y" {yyval.i = 0;; break;} case 353: -#line 3390 "Gmsh.y" +#line 3436 "Gmsh.y" {yyval.i = -1;; break;} case 354: -#line 3391 "Gmsh.y" +#line 3437 "Gmsh.y" {yyval.i = -1;; break;} case 355: -#line 3392 "Gmsh.y" +#line 3438 "Gmsh.y" {yyval.i = -1;; break;} case 356: -#line 3396 "Gmsh.y" +#line 3442 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 357: -#line 3397 "Gmsh.y" +#line 3443 "Gmsh.y" { yyval.d = yyvsp[-1].d; ; break;} case 358: -#line 3398 "Gmsh.y" +#line 3444 "Gmsh.y" { yyval.d = -yyvsp[0].d; ; break;} case 359: -#line 3399 "Gmsh.y" +#line 3445 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 360: -#line 3400 "Gmsh.y" +#line 3446 "Gmsh.y" { yyval.d = !yyvsp[0].d; ; break;} case 361: -#line 3401 "Gmsh.y" +#line 3447 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d; ; break;} case 362: -#line 3402 "Gmsh.y" +#line 3448 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d; ; break;} case 363: -#line 3403 "Gmsh.y" +#line 3449 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d; ; break;} case 364: -#line 3405 "Gmsh.y" +#line 3451 "Gmsh.y" { if(!yyvsp[0].d) yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); @@ -8151,235 +8193,235 @@ case 364: ; break;} case 365: -#line 3411 "Gmsh.y" +#line 3457 "Gmsh.y" { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d; ; break;} case 366: -#line 3412 "Gmsh.y" +#line 3458 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d, yyvsp[0].d); ; break;} case 367: -#line 3413 "Gmsh.y" +#line 3459 "Gmsh.y" { yyval.d = yyvsp[-2].d < yyvsp[0].d; ; break;} case 368: -#line 3414 "Gmsh.y" +#line 3460 "Gmsh.y" { yyval.d = yyvsp[-2].d > yyvsp[0].d; ; break;} case 369: -#line 3415 "Gmsh.y" +#line 3461 "Gmsh.y" { yyval.d = yyvsp[-2].d <= yyvsp[0].d; ; break;} case 370: -#line 3416 "Gmsh.y" +#line 3462 "Gmsh.y" { yyval.d = yyvsp[-2].d >= yyvsp[0].d; ; break;} case 371: -#line 3417 "Gmsh.y" +#line 3463 "Gmsh.y" { yyval.d = yyvsp[-2].d == yyvsp[0].d; ; break;} case 372: -#line 3418 "Gmsh.y" +#line 3464 "Gmsh.y" { yyval.d = yyvsp[-2].d != yyvsp[0].d; ; break;} case 373: -#line 3419 "Gmsh.y" +#line 3465 "Gmsh.y" { yyval.d = yyvsp[-2].d && yyvsp[0].d; ; break;} case 374: -#line 3420 "Gmsh.y" +#line 3466 "Gmsh.y" { yyval.d = yyvsp[-2].d || yyvsp[0].d; ; break;} case 375: -#line 3421 "Gmsh.y" +#line 3467 "Gmsh.y" { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d; ; break;} case 376: -#line 3422 "Gmsh.y" +#line 3468 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} case 377: -#line 3423 "Gmsh.y" +#line 3469 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} case 378: -#line 3424 "Gmsh.y" +#line 3470 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} case 379: -#line 3425 "Gmsh.y" +#line 3471 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} case 380: -#line 3426 "Gmsh.y" +#line 3472 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} case 381: -#line 3427 "Gmsh.y" +#line 3473 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} case 382: -#line 3428 "Gmsh.y" +#line 3474 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} case 383: -#line 3429 "Gmsh.y" +#line 3475 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} case 384: -#line 3430 "Gmsh.y" +#line 3476 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} case 385: -#line 3431 "Gmsh.y" +#line 3477 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} case 386: -#line 3432 "Gmsh.y" +#line 3478 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} case 387: -#line 3433 "Gmsh.y" +#line 3479 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} case 388: -#line 3434 "Gmsh.y" +#line 3480 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} case 389: -#line 3435 "Gmsh.y" +#line 3481 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} case 390: -#line 3436 "Gmsh.y" +#line 3482 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} case 391: -#line 3437 "Gmsh.y" +#line 3483 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} case 392: -#line 3438 "Gmsh.y" +#line 3484 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} case 393: -#line 3439 "Gmsh.y" +#line 3485 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 394: -#line 3440 "Gmsh.y" +#line 3486 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 395: -#line 3441 "Gmsh.y" +#line 3487 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} case 396: -#line 3442 "Gmsh.y" +#line 3488 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} case 397: -#line 3444 "Gmsh.y" +#line 3490 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} case 398: -#line 3445 "Gmsh.y" +#line 3491 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} case 399: -#line 3446 "Gmsh.y" +#line 3492 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} case 400: -#line 3447 "Gmsh.y" +#line 3493 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} case 401: -#line 3448 "Gmsh.y" +#line 3494 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} case 402: -#line 3449 "Gmsh.y" +#line 3495 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} case 403: -#line 3450 "Gmsh.y" +#line 3496 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} case 404: -#line 3451 "Gmsh.y" +#line 3497 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} case 405: -#line 3452 "Gmsh.y" +#line 3498 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} case 406: -#line 3453 "Gmsh.y" +#line 3499 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} case 407: -#line 3454 "Gmsh.y" +#line 3500 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} case 408: -#line 3455 "Gmsh.y" +#line 3501 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} case 409: -#line 3456 "Gmsh.y" +#line 3502 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} case 410: -#line 3457 "Gmsh.y" +#line 3503 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} case 411: -#line 3458 "Gmsh.y" +#line 3504 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} case 412: -#line 3459 "Gmsh.y" +#line 3505 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} case 413: -#line 3460 "Gmsh.y" +#line 3506 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} case 414: -#line 3461 "Gmsh.y" +#line 3507 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 415: -#line 3462 "Gmsh.y" +#line 3508 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} case 416: -#line 3463 "Gmsh.y" +#line 3509 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} case 417: -#line 3464 "Gmsh.y" +#line 3510 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} case 418: -#line 3473 "Gmsh.y" +#line 3519 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} case 419: -#line 3474 "Gmsh.y" +#line 3520 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} case 420: -#line 3475 "Gmsh.y" +#line 3521 "Gmsh.y" { yyval.d = ParUtil::Instance()->rank(); ; break;} case 421: -#line 3476 "Gmsh.y" +#line 3522 "Gmsh.y" { yyval.d = ParUtil::Instance()->size(); ; break;} case 422: -#line 3481 "Gmsh.y" +#line 3527 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[0].c; @@ -8390,10 +8432,11 @@ case 422: } else yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0); + Free(yyvsp[0].c); ; break;} case 423: -#line 3493 "Gmsh.y" +#line 3540 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-3].c; @@ -8411,10 +8454,11 @@ case 423: yyval.d = 0.; } } + Free(yyvsp[-3].c); ; break;} case 424: -#line 3512 "Gmsh.y" +#line 3560 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-2].c; @@ -8426,10 +8470,11 @@ case 424: else{ yyval.d = List_Nbr(pSymbol->val); } + Free(yyvsp[-2].c); ; break;} case 425: -#line 3525 "Gmsh.y" +#line 3574 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-1].c; @@ -8440,10 +8485,11 @@ case 425: } else yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[0].i); + Free(yyvsp[-1].c); ; break;} case 426: -#line 3537 "Gmsh.y" +#line 3587 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-4].c; @@ -8461,10 +8507,11 @@ case 426: yyval.d = 0.; } } + Free(yyvsp[-4].c); ; break;} case 427: -#line 3559 "Gmsh.y" +#line 3610 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -8480,10 +8527,11 @@ case 427: else yyval.d = pNumOpt(0, GMSH_GET, 0); } + Free(yyvsp[-2].c); Free(yyvsp[0].c); ; break;} case 428: -#line 3576 "Gmsh.y" +#line 3628 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -8499,10 +8547,11 @@ case 428: else yyval.d = pNumOpt((int)yyvsp[-3].d, GMSH_GET, 0); } + Free(yyvsp[-5].c); Free(yyvsp[0].c); ; break;} case 429: -#line 3593 "Gmsh.y" +#line 3646 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -8518,10 +8567,11 @@ case 429: else yyval.d = pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+yyvsp[0].i); } + Free(yyvsp[-3].c); Free(yyvsp[-1].c); ; break;} case 430: -#line 3610 "Gmsh.y" +#line 3664 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -8537,139 +8587,141 @@ case 430: else yyval.d = pNumOpt((int)yyvsp[-4].d, GMSH_SET|GMSH_GUI, pNumOpt((int)yyvsp[-4].d, GMSH_GET, 0)+yyvsp[0].i); } + Free(yyvsp[-6].c); Free(yyvsp[-1].c); ; break;} case 431: -#line 3627 "Gmsh.y" +#line 3682 "Gmsh.y" { yyval.d = GetValue(yyvsp[-3].c, yyvsp[-1].d); + Free(yyvsp[-3].c); ; break;} case 432: -#line 3634 "Gmsh.y" +#line 3690 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)); ; break;} case 433: -#line 3638 "Gmsh.y" +#line 3694 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = -yyvsp[0].v[i]; ; break;} case 434: -#line 3642 "Gmsh.y" +#line 3698 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} case 435: -#line 3646 "Gmsh.y" +#line 3702 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i]; ; break;} case 436: -#line 3650 "Gmsh.y" +#line 3706 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i]; ; break;} case 437: -#line 3657 "Gmsh.y" +#line 3713 "Gmsh.y" { yyval.v[0] = yyvsp[-9].d; yyval.v[1] = yyvsp[-7].d; yyval.v[2] = yyvsp[-5].d; yyval.v[3] = yyvsp[-3].d; yyval.v[4] = yyvsp[-1].d; ; break;} case 438: -#line 3661 "Gmsh.y" +#line 3717 "Gmsh.y" { yyval.v[0] = yyvsp[-7].d; yyval.v[1] = yyvsp[-5].d; yyval.v[2] = yyvsp[-3].d; yyval.v[3] = yyvsp[-1].d; yyval.v[4] = 1.0; ; break;} case 439: -#line 3665 "Gmsh.y" +#line 3721 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} case 440: -#line 3669 "Gmsh.y" +#line 3725 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} case 441: -#line 3676 "Gmsh.y" +#line 3732 "Gmsh.y" { ; break;} case 442: -#line 3679 "Gmsh.y" +#line 3735 "Gmsh.y" { ; break;} case 443: -#line 3685 "Gmsh.y" +#line 3741 "Gmsh.y" { ; break;} case 444: -#line 3688 "Gmsh.y" +#line 3744 "Gmsh.y" { ; break;} case 445: -#line 3694 "Gmsh.y" +#line 3750 "Gmsh.y" { ; break;} case 446: -#line 3697 "Gmsh.y" +#line 3753 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 447: -#line 3701 "Gmsh.y" +#line 3757 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 448: -#line 3708 "Gmsh.y" +#line 3764 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(List_T*)); List_Add(yyval.l, &(yyvsp[0].l)); ; break;} case 449: -#line 3713 "Gmsh.y" +#line 3769 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].l)); ; break;} case 450: -#line 3721 "Gmsh.y" +#line 3777 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} case 451: -#line 3726 "Gmsh.y" +#line 3782 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} case 452: -#line 3730 "Gmsh.y" +#line 3786 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 453: -#line 3734 "Gmsh.y" +#line 3790 "Gmsh.y" { yyval.l = yyvsp[-1].l; double *pd; @@ -8680,7 +8732,7 @@ case 453: ; break;} case 454: -#line 3746 "Gmsh.y" +#line 3802 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); for(double d = yyvsp[-2].d; (yyvsp[-2].d < yyvsp[0].d) ? (d <= yyvsp[0].d) : (d >= yyvsp[0].d); (yyvsp[-2].d < yyvsp[0].d) ? (d += 1.) : (d -= 1.)) @@ -8688,7 +8740,7 @@ case 454: ; break;} case 455: -#line 3752 "Gmsh.y" +#line 3808 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); if(!yyvsp[0].d || (yyvsp[-4].d < yyvsp[-2].d && yyvsp[0].d < 0) || (yyvsp[-4].d > yyvsp[-2].d && yyvsp[0].d > 0)){ @@ -8701,7 +8753,7 @@ case 455: ; break;} case 456: -#line 3763 "Gmsh.y" +#line 3819 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -8723,7 +8775,7 @@ case 456: ; break;} case 457: -#line 3783 "Gmsh.y" +#line 3839 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -8735,7 +8787,7 @@ case 457: ; break;} case 458: -#line 3793 "Gmsh.y" +#line 3849 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -8747,7 +8799,7 @@ case 458: ; break;} case 459: -#line 3803 "Gmsh.y" +#line 3859 "Gmsh.y" { // FIXME: The syntax for this is ugly: we get double semi-colons // at the end of the line @@ -8761,7 +8813,7 @@ case 459: ; break;} case 460: -#line 3815 "Gmsh.y" +#line 3871 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -8776,10 +8828,11 @@ case 460: for(int i = 0; i < List_Nbr(pSymbol->val); i++) List_Add(yyval.l, (double*)List_Pointer_Fast(pSymbol->val, i)); } + Free(yyvsp[-2].c); ; break;} case 461: -#line 3831 "Gmsh.y" +#line 3888 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -8796,10 +8849,11 @@ case 461: List_Add(yyval.l, &d); } } + Free(yyvsp[-2].c); ; break;} case 462: -#line 3849 "Gmsh.y" +#line 3907 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -8820,11 +8874,12 @@ case 462: yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-5].c, j); } } + Free(yyvsp[-5].c); List_Delete(yyvsp[-2].l); ; break;} case 463: -#line 3872 "Gmsh.y" +#line 3931 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -8847,30 +8902,31 @@ case 463: yymsg(GERROR, "Uninitialized variable '%s[%d]'", yyvsp[-5].c, j); } } + Free(yyvsp[-5].c); List_Delete(yyvsp[-2].l); ; break;} case 464: -#line 3900 "Gmsh.y" +#line 3960 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} case 465: -#line 3905 "Gmsh.y" +#line 3965 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} case 466: -#line 3909 "Gmsh.y" +#line 3969 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].d)); ; break;} case 467: -#line 3913 "Gmsh.y" +#line 3973 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ double d; @@ -8881,27 +8937,28 @@ case 467: ; break;} case 468: -#line 3926 "Gmsh.y" +#line 3986 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} case 469: -#line 3930 "Gmsh.y" +#line 3990 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} case 470: -#line 3942 "Gmsh.y" +#line 4002 "Gmsh.y" { int flag; yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); if(flag) yymsg(GERROR, "Unknown color '%s'", yyvsp[0].c); + Free(yyvsp[0].c); ; break;} case 471: -#line 3948 "Gmsh.y" +#line 4009 "Gmsh.y" { unsigned int (*pColOpt)(int num, int action, unsigned int value); StringXColor *pColCat; @@ -8918,16 +8975,17 @@ case 471: yyval.u = pColOpt(0, GMSH_GET, 0); } } + Free(yyvsp[-4].c); Free(yyvsp[0].c); ; break;} case 472: -#line 3969 "Gmsh.y" +#line 4031 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} case 473: -#line 3973 "Gmsh.y" +#line 4035 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d); @@ -8937,29 +8995,30 @@ case 473: for(int i = 0; i < ct->size; i++) List_Add(yyval.l, &ct->table[i]); } + Free(yyvsp[-5].c); ; break;} case 474: -#line 3987 "Gmsh.y" +#line 4050 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); List_Add(yyval.l, &(yyvsp[0].u)); ; break;} case 475: -#line 3992 "Gmsh.y" +#line 4055 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].u)); ; break;} case 476: -#line 3999 "Gmsh.y" +#line 4062 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} case 477: -#line 4003 "Gmsh.y" +#line 4066 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)); strcpy(yyval.c, yyvsp[-3].c); @@ -8969,7 +9028,7 @@ case 477: ; break;} case 478: -#line 4011 "Gmsh.y" +#line 4074 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)); int i; @@ -8985,13 +9044,13 @@ case 478: ; break;} case 479: -#line 4025 "Gmsh.y" +#line 4088 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} case 480: -#line 4029 "Gmsh.y" +#line 4092 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble(yyvsp[-3].c, yyvsp[-1].l, tmpstring); @@ -9012,7 +9071,7 @@ case 480: ; break;} case 481: -#line 4048 "Gmsh.y" +#line 4111 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -9030,7 +9089,7 @@ case 481: ; break;} case 482: -#line 4064 "Gmsh.y" +#line 4127 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -9269,7 +9328,7 @@ yyerrhandle: } return 1; } -#line 4081 "Gmsh.y" +#line 4144 "Gmsh.y" void DeleteSymbol(void *a, void *b){ diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 876ab7df220fd6593136288f6c416eb796eeb48d..0a26e74f5fdb9f7ce52cf8cf4fb4e4037b30498a 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,5 +1,5 @@ %{ -// $Id: Gmsh.y,v 1.193 2004-12-30 01:48:54 geuzaine Exp $ +// $Id: Gmsh.y,v 1.194 2004-12-30 05:43:44 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // @@ -47,8 +47,6 @@ #include "STL.h" #include "Visibility.h" -// FIXME: most tSTRING and tBIGSTRING are leaked: Free() them! - Tree_T *Symbol_T = NULL; extern Context_T CTX; @@ -218,6 +216,10 @@ StlFormatItem : // S T E P I S O - 1 0 3 0 3 - 2 1 F I L E F O R M A T +// FIXME: The STEP interface is incomplete. All the strings and most +// of the lists are leaked in this (unused and unusable...) part of +// the parser. + StepFormatItems : // nothing | StepFormatItems StepFormatItem @@ -254,20 +256,20 @@ StepHeaderItem : } | tFILE_NAME '(' tBIGSTR ',' tBIGSTR ',' ListOfStrings ',' ListOfStrings ',' tBIGSTR ',' tBIGSTR ',' tBIGSTR ')' tEND - { - } + { + } ; StepDataItem : tDOUBLE tAFFECT tCARTESIAN_POINT '(' tBIGSTR ',' VExpr ')' tEND { - Add_Cartesian_Point((int)$1, $5, $7[0], $7[1], $7[2]); + Add_Cartesian_Point((int)$1, $5, $7[0], $7[1], $7[2]); } | tDOUBLE tAFFECT tB_SPLINE_CURVE_WITH_KNOTS '(' tBIGSTR ',' FExpr ',' ListOfDouble ',' BoolExpr ',' BoolExpr ',' BoolExpr ',' ListOfDouble ',' ListOfDouble ',' BoolExpr ')' tEND { - Add_BSpline_Curve_With_Knots ((int)$1, $5, (int) $7, $9, $17, $19, 0., 1.); + Add_BSpline_Curve_With_Knots ((int)$1, $5, (int) $7, $9, $17, $19, 0., 1.); } | tDOUBLE tAFFECT tB_SPLINE_SURFACE_WITH_KNOTS '(' tBIGSTR ',' FExpr ',' FExpr ',' ListOfListOfDouble ',' BoolExpr ',' @@ -416,6 +418,7 @@ Printf : tPrintf '(' tBIGSTR ')' tEND { Msg(DIRECT, $3); + Free($3); } | tPrintf '(' tBIGSTR ',' RecursiveListOfDouble ')' tEND { @@ -427,6 +430,7 @@ Printf : yymsg(GERROR, "%d extra argument%s in Printf", i, (i>1)?"s":""); else Msg(DIRECT, tmpstring); + Free($3); List_Delete($5); } ; @@ -439,12 +443,14 @@ View : if(!strcmp($1, "View") && !CheckViewErrorFlags(View)){ EndView(View, 0, yyname, $2); } + Free($1); Free($2); } | tSTRING tBIGSTR tSTRING VExpr '{' Views '}' tEND { if(!strcmp($1, "View") && !CheckViewErrorFlags(View)){ EndView(View, 0, yyname, $2); } + Free($1); Free($2); Free($3); } ; @@ -1274,13 +1280,15 @@ Affectation : TheSymbol.Name = $1; Symbol *pSymbol; if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ - TheSymbol.val = List_Create(1, 1, sizeof(double)); if(!$2){ + TheSymbol.val = List_Create(1, 1, sizeof(double)); List_Put(TheSymbol.val, 0, &$3); Tree_Add(Symbol_T, &TheSymbol); } - else + else{ yymsg(GERROR, "Unknown variable '%s'", $1); + Free($1); + } } else{ double *pd = (double*)List_Pointer_Fast(pSymbol->val, 0); @@ -1294,6 +1302,7 @@ Affectation : else yymsg(GERROR, "Division by zero in '%s /= %g'", $1, $3); break; } + Free($1); } } | tSTRING '[' FExpr ']' NumericAffectation FExpr tEND @@ -1302,13 +1311,15 @@ Affectation : TheSymbol.Name = $1; Symbol *pSymbol; if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ - TheSymbol.val = List_Create(5, 5, sizeof(double)); if(!$5){ + TheSymbol.val = List_Create(5, 5, sizeof(double)); List_Put(TheSymbol.val, (int)$3, &$6); Tree_Add(Symbol_T, &TheSymbol); } - else + else{ yymsg(GERROR, "Unknown variable '%s'", $1); + Free($1); + } } else{ double *pd; @@ -1330,27 +1341,32 @@ Affectation : else yymsg(GERROR, "Uninitialized variable '%s[%d]'", $1, (int)$3); } + Free($1); } } | tSTRING '[' '{' RecursiveListOfDouble '}' ']' NumericAffectation ListOfDouble tEND { - if(List_Nbr($4) != List_Nbr($8)) + if(List_Nbr($4) != List_Nbr($8)){ yymsg(GERROR, "Incompatible array dimensions in affectation"); + Free($1); + } else{ Symbol TheSymbol; TheSymbol.Name = $1; Symbol *pSymbol; if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))){ - TheSymbol.val = List_Create(5, 5, sizeof(double)); if(!$7){ + TheSymbol.val = List_Create(5, 5, sizeof(double)); for(int i = 0; i < List_Nbr($4); i++){ List_Put(TheSymbol.val, (int)(*(double*)List_Pointer($4, i)), (double*)List_Pointer($8, i)); } Tree_Add(Symbol_T, &TheSymbol); } - else + else{ yymsg(GERROR, "Unknown variable '%s'", $1); + Free($1); + } } else{ for(int i = 0; i < List_Nbr($4); i++){ @@ -1376,6 +1392,7 @@ Affectation : yymsg(GERROR, "Uninitialized variable '%s[%d]'", $1, j); } } + Free($1); } } List_Delete($4); @@ -1394,6 +1411,7 @@ Affectation : else{ List_Reset(pSymbol->val); List_Copy($5, pSymbol->val); + Free($1); } List_Delete($5); } @@ -1405,7 +1423,8 @@ Affectation : if(!(pSymbol = (Symbol*)Tree_PQuery(Symbol_T, &TheSymbol))) yymsg(GERROR, "Unknown variable '%s'", $1); else - *(double*)List_Pointer_Fast(pSymbol->val, 0) += $2; + *(double*)List_Pointer_Fast(pSymbol->val, 0) += $2; + Free($1); } | tSTRING '[' FExpr ']' NumericIncrement tEND { @@ -1421,6 +1440,7 @@ Affectation : else yymsg(GERROR, "Uninitialized variable '%s[%d]'", $1, (int)$3); } + Free($1); } // Option Strings @@ -1437,6 +1457,7 @@ Affectation : else pStrOpt(0, GMSH_SET|GMSH_GUI, $5); } + Free($1); Free($3); //FIXME: somtimes leak $5 } | tSTRING '[' FExpr ']' '.' tSTRING tAFFECT StringExpr tEND { @@ -1450,6 +1471,7 @@ Affectation : else pStrOpt((int)$3, GMSH_SET|GMSH_GUI, $8); } + Free($1); Free($6); //FIXME: somtimes leak $8 } // Option Numbers @@ -1478,6 +1500,7 @@ Affectation : pNumOpt(0, GMSH_SET|GMSH_GUI, d); } } + Free($1); Free($3); } | tSTRING '[' FExpr ']' '.' tSTRING NumericAffectation FExpr tEND { @@ -1504,6 +1527,7 @@ Affectation : pNumOpt((int)$3, GMSH_SET|GMSH_GUI, d); } } + Free($1); Free($6); } | tSTRING '.' tSTRING NumericIncrement tEND { @@ -1517,6 +1541,7 @@ Affectation : else pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+$4); } + Free($1); Free($3); } | tSTRING '[' FExpr ']' '.' tSTRING NumericIncrement tEND { @@ -1530,6 +1555,7 @@ Affectation : else pNumOpt((int)$3, GMSH_SET|GMSH_GUI, pNumOpt((int)$3, GMSH_GET, 0)+$7); } + Free($1); Free($6); } // Option Colors @@ -1546,6 +1572,7 @@ Affectation : else pColOpt(0, GMSH_SET|GMSH_GUI, $7); } + Free($1); Free($5); } | tSTRING '[' FExpr ']' '.' tColor '.' tSTRING tAFFECT ColorExpr tEND { @@ -1559,6 +1586,7 @@ Affectation : else pColOpt((int)$3, GMSH_SET|GMSH_GUI, $10); } + Free($1); Free($8); } // ColorTable @@ -1580,6 +1608,7 @@ Affectation : ct->table[1] = ct->table[0]; } } + Free($1); List_Delete($5); } | tSTRING '[' FExpr ']' '.' tColorTable tAFFECT ListOfColor tEND @@ -1599,6 +1628,7 @@ Affectation : ct->table[1] = ct->table[0]; } } + Free($1); List_Delete($8); } @@ -1612,6 +1642,7 @@ Affectation : catch (...) { yymsg(GERROR, "Unknown option '%s' or plugin '%s'", $6, $3); } + Free($3); Free($6); } | tPlugin '(' tSTRING ')' '.' tSTRING tAFFECT StringExpr tEND { @@ -1621,6 +1652,7 @@ Affectation : catch (...) { yymsg(GERROR, "Unknown option '%s' or plugin '%s'", $6, $3); } + Free($3); Free($6); // FIXME: sometimes leak $8 } ; @@ -1841,6 +1873,7 @@ Shape : Tree_Add(THEM->Curves, &c); CreateReversedCurve(THEM, c); } + Free($11); Free($13); Free($15); $$.Type = MSH_SEGM_PARAMETRIC; $$.Num = num; } @@ -2343,6 +2376,7 @@ Duplicata : | tDuplicata tSTRING '[' FExpr ']' tEND { if(!strcmp($2, "View")) DuplicateView((int)$4, 0); + Free($2); $$ = NULL; } ; @@ -2368,6 +2402,7 @@ Delete : else{ yymsg(GERROR, "Unknown command 'Delete %s'", $2); } + Free($2); } | tDelete tSTRING tEND { @@ -2377,6 +2412,7 @@ Delete : else{ yymsg(GERROR, "Unknown command 'Delete %s'", $2); } + Free($2); } | tDelete tSTRING tSTRING tEND { @@ -2390,6 +2426,7 @@ Delete : else{ yymsg(GERROR, "Unknown command 'Delete %s %s'", $2, $3); } + Free($2); Free($3); } ; @@ -2416,11 +2453,13 @@ Visibility : ((CTX.visibility_mode == 1) ? VIS_GEOM : VIS_GEOM|VIS_MESH); for(int i = 2; i < 6; i++) SetVisibilityByNumber($2, i, m); + Free($2); } | tHide StringExpr tEND { for(int i = 2; i < 6; i++) SetVisibilityByNumber($2, i, 0); + Free($2); } | tShow '{' ListOfShapes '}' { @@ -2489,6 +2528,7 @@ Command : else{ yymsg(GERROR, "Unknown command '%s'", $1); } + Free($1); Free($2); } | tSTRING tSTRING '[' FExpr ']' StringExpr tEND { @@ -2503,6 +2543,7 @@ Command : else{ yymsg(GERROR, "Unknown command '%s'", $1); } + Free($1); Free($2); Free($6); } | tSTRING FExpr tEND { @@ -2518,16 +2559,18 @@ Command : else{ yymsg(GERROR, "Unknown command '%s'", $1); } + Free($1); } | tPlugin '(' tSTRING ')' '.' tSTRING tEND - { - try { - GMSH_PluginManager::instance()->action($3, $6, 0); - } - catch(...) { - yymsg(GERROR, "Unknown action '%s' or plugin '%s'", $6, $3); - } - } + { + try { + GMSH_PluginManager::instance()->action($3, $6, 0); + } + catch(...) { + yymsg(GERROR, "Unknown action '%s' or plugin '%s'", $6, $3); + } + Free($3); Free($6); + } | tCombine tSTRING tEND { // for backward compatibility @@ -2537,6 +2580,7 @@ Command : CombineViews(1, 2, CTX.post.combine_remove_orig); else yymsg(GERROR, "Unknown 'Combine' command"); + Free($2); } | tExit tEND { @@ -2568,7 +2612,7 @@ Loop : LoopControlVariablesTab[ImbricatedLoop][0] = $3; LoopControlVariablesTab[ImbricatedLoop][1] = $5; LoopControlVariablesTab[ImbricatedLoop][2] = 1.0; - LoopControlVariablesNameTab[ImbricatedLoop] = ""; + LoopControlVariablesNameTab[ImbricatedLoop] = NULL; fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]); yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno; ImbricatedLoop++; @@ -2583,7 +2627,7 @@ Loop : LoopControlVariablesTab[ImbricatedLoop][0] = $3; LoopControlVariablesTab[ImbricatedLoop][1] = $5; LoopControlVariablesTab[ImbricatedLoop][2] = $7; - LoopControlVariablesNameTab[ImbricatedLoop] = ""; + LoopControlVariablesNameTab[ImbricatedLoop] = NULL; fgetpos(yyin, &yyposImbricatedLoopsTab[ImbricatedLoop]); yylinenoImbricatedLoopsTab[ImbricatedLoop] = yylineno; ImbricatedLoop++; @@ -2661,7 +2705,7 @@ Loop : if(do_next){ LoopControlVariablesTab[ImbricatedLoop-1][0] += LoopControlVariablesTab[ImbricatedLoop-1][2]; - if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){ + if(LoopControlVariablesNameTab[ImbricatedLoop-1]){ Symbol TheSymbol; TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1]; Symbol *pSymbol; @@ -2684,6 +2728,7 @@ Loop : if(!FunctionManager::Instance()->createFunction($2, yyin, yyname, yylineno)) yymsg(GERROR, "Redefinition of function %s", $2); skip_until(NULL, "Return"); + //FIXME: wee leak $2 } | tReturn { @@ -2694,6 +2739,7 @@ Loop : { if(!FunctionManager::Instance()->enterFunction($2, &yyin, yyname, yylineno)) yymsg(GERROR, "Unknown function %s", $2); + //FIXME: wee leak $2 } | tIf '(' FExpr ')' { @@ -3488,6 +3534,7 @@ FExpr_Single : } else $$ = *(double*)List_Pointer_Fast(pSymbol->val, 0); + Free($1); } | tSTRING '[' FExpr ']' { @@ -3507,6 +3554,7 @@ FExpr_Single : $$ = 0.; } } + Free($1); } | '#' tSTRING '[' ']' { @@ -3520,6 +3568,7 @@ FExpr_Single : else{ $$ = List_Nbr(pSymbol->val); } + Free($2); } | tSTRING NumericIncrement { @@ -3532,6 +3581,7 @@ FExpr_Single : } else $$ = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += $2); + Free($1); } | tSTRING '[' FExpr ']' NumericIncrement { @@ -3551,6 +3601,7 @@ FExpr_Single : $$ = 0.; } } + Free($1); } // Option Strings @@ -3571,6 +3622,7 @@ FExpr_Single : else $$ = pNumOpt(0, GMSH_GET, 0); } + Free($1); Free($3); } | tSTRING '[' FExpr ']' '.' tSTRING { @@ -3588,6 +3640,7 @@ FExpr_Single : else $$ = pNumOpt((int)$3, GMSH_GET, 0); } + Free($1); Free($6); } | tSTRING '.' tSTRING NumericIncrement { @@ -3605,6 +3658,7 @@ FExpr_Single : else $$ = pNumOpt(0, GMSH_SET|GMSH_GUI, pNumOpt(0, GMSH_GET, 0)+$4); } + Free($1); Free($3); } | tSTRING '[' FExpr ']' '.' tSTRING NumericIncrement { @@ -3622,10 +3676,12 @@ FExpr_Single : else $$ = pNumOpt((int)$3, GMSH_SET|GMSH_GUI, pNumOpt((int)$3, GMSH_GET, 0)+$7); } + Free($1); Free($6); } | tGetValue '(' tBIGSTR ',' FExpr ')' { $$ = GetValue($3, $5); + Free($3); } ; @@ -3826,6 +3882,7 @@ FExpr_Multi : for(int i = 0; i < List_Nbr(pSymbol->val); i++) List_Add($$, (double*)List_Pointer_Fast(pSymbol->val, i)); } + Free($1); } | '-' tSTRING '[' ']' { @@ -3844,6 +3901,7 @@ FExpr_Multi : List_Add($$, &d); } } + Free($2); } | tSTRING '[' '{' RecursiveListOfDouble '}' ']' { @@ -3866,6 +3924,7 @@ FExpr_Multi : yymsg(GERROR, "Uninitialized variable '%s[%d]'", $1, j); } } + Free($1); List_Delete($4); } | '-' tSTRING '[' '{' RecursiveListOfDouble '}' ']' @@ -3891,6 +3950,7 @@ FExpr_Multi : yymsg(GERROR, "Uninitialized variable '%s[%d]'", $2, j); } } + Free($2); List_Delete($5); } ; @@ -3943,6 +4003,7 @@ ColorExpr : int flag; $$ = Get_ColorForString(ColorString, -1, $1, &flag); if(flag) yymsg(GERROR, "Unknown color '%s'", $1); + Free($1); } | tSTRING '.' tColor '.' tSTRING { @@ -3961,6 +4022,7 @@ ColorExpr : $$ = pColOpt(0, GMSH_GET, 0); } } + Free($1); Free($5); } ; @@ -3979,6 +4041,7 @@ ListOfColor : for(int i = 0; i < ct->size; i++) List_Add($$, &ct->table[i]); } + Free($1); } ; diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index b60093d154baa3ca18a70e86a429ff78abecae0e..5026a5430d15f2beea1e31ae42d7104869aa6e9a 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -2,7 +2,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.220 2004-12-30 01:48:54 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.221 2004-12-30 05:43:44 geuzaine Exp $ */ #define FLEX_SCANNER @@ -1033,7 +1033,7 @@ char *yytext; #line 1 "Gmsh.l" #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.220 2004-12-30 01:48:54 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.221 2004-12-30 05:43:44 geuzaine Exp $ // // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle // diff --git a/TODO b/TODO index feda6e8738098592ba4141a0ee4c93d1953d2418..ff93eb6828894b8f7521fcd1dd6aa819b957dea6 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,4 @@ -$Id: TODO,v 1.72 2004-12-27 21:43:38 geuzaine Exp $ +$Id: TODO,v 1.73 2004-12-30 05:43:42 geuzaine Exp $ create Gradient, Curl and Divergence plugins (based on Plugins/ShapeFunctions.h) @@ -107,8 +107,7 @@ Attractors in the 2D aniso algo are extremely buggy Memory leaks, memory leaks -- start with mesh_domain() and the parser (update: parser should be - mostly OK now) +- in the old 2D code: mesh_domain()... - check all calls to Tree_Replace: we shouldn't use it with trees of pointers, since we loose the original pointer when we actually do a diff --git a/doc/VERSIONS b/doc/VERSIONS index cb0262ee4a5c09b2ce87d1db12cc1569003e89ae..5948d179133a766d2f6096a109450129e0c87e1a 100644 --- a/doc/VERSIONS +++ b/doc/VERSIONS @@ -1,11 +1,12 @@ -$Id: VERSIONS,v 1.289 2004-12-29 16:34:38 geuzaine Exp $ +$Id: VERSIONS,v 1.290 2004-12-30 05:43:44 geuzaine Exp $ New since 1.57: new File->Rename menu; new colormaps+improved colormap handling; new color+min/max options in views; new GetValue() function to ask for values interactively in scripts; generalized For/EndFor loops in parser; new plugins (Annotate, Remove, Probe); new text attributes in views; renamed some shortcuts; fixed TeX output for -large scenes; various other small enhancements and bug fixes. +large scenes; fixed many small memory leaks in parser; various other +small enhancements and bug fixes. New in 1.57: generalized displacement maps to display arbitrary view types; the arrows representing a vector field can now also be colored