8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 14:03:07 +01:00

Fix SF Bug# 1408079 and also the same problem with unterminated comment blocks /* ...

This commit is contained in:
robocop 2006-01-25 08:40:39 +00:00
parent 279c0906c4
commit 770fd53775
2 changed files with 156 additions and 132 deletions

View File

@ -723,8 +723,6 @@
#include "../jrd/err_proto.h"
#include "../jrd/intlobj_new.h"
static void yyerror(const TEXT*);
/* since UNIX isn't standard, we have to define
stuff which is in <limits.h> (which isn't available
on all UNIXes... */
@ -756,6 +754,9 @@ typedef dsql_nod* YYSTYPE;
#define YYDEBUG 1
#endif
#define YYMALLOC gds__alloc
#define YYFREE gds__free
static const char INTERNAL_FIELD_NAME[] = "DSQL internal"; /* NTX: placeholder */
static const char NULL_STRING[] = "";
@ -767,7 +768,6 @@ inline SLONG trigger_type_suffix(const int slot1, const int slot2, const int slo
dsql_nod* DSQL_parse;
//static void yyerror(const TEXT*); redeclaration.
#define YYPARSE_PARAM_TYPE
#define YYPARSE_PARAM USHORT client_dialect, USHORT db_dialect, USHORT parser_version, bool* stmt_ambiguous
@ -792,7 +792,9 @@ static bool short_int(dsql_nod*, SLONG*, SSHORT);
#endif
static void stack_nodes (dsql_nod*, DsqlNodStack&);
inline static int yylex (USHORT, USHORT, USHORT, bool*);
static void yyabandon (SSHORT, ISC_STATUS);
static void yyerror(const TEXT*);
static void yyabandon (SLONG, ISC_STATUS);
inline void check_bound(const char* const to, const char* const string)
{
@ -1580,120 +1582,120 @@ static const short int yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned short int yyrline[] =
{
0, 556, 556, 558, 562, 563, 564, 565, 566, 567,
568, 569, 570, 571, 572, 573, 574, 575, 576, 577,
578, 579, 580, 581, 582, 590, 594, 598, 603, 604,
607, 609, 611, 615, 616, 620, 624, 626, 628, 630,
632, 636, 639, 642, 645, 648, 655, 659, 663, 668,
671, 674, 677, 680, 681, 684, 685, 687, 689, 693,
695, 697, 699, 703, 704, 711, 713, 715, 719, 720,
724, 728, 729, 733, 735, 742, 746, 748, 753, 759,
760, 762, 769, 770, 771, 775, 776, 782, 788, 789,
791, 793, 797, 798, 802, 805, 811, 812, 814, 816,
819, 824, 830, 833, 839, 843, 845, 848, 850, 852,
854, 856, 858, 860, 862, 864, 866, 875, 879, 881,
883, 885, 891, 895, 899, 901, 907, 914, 919, 924,
929, 937, 940, 943, 945, 946, 952, 958, 960, 963,
967, 968, 973, 974, 979, 980, 983, 984, 991, 1009,
1012, 1015, 1019, 1021, 1024, 1026, 1029, 1030, 1034, 1038,
1039, 1042, 1046, 1054, 1061, 1126, 1131, 1132, 1135, 1140,
1141, 1144, 1145, 1149, 1151, 1153, 1155, 1157, 1162, 1163,
1166, 1167, 1171, 1172, 1174, 1178, 1184, 1188, 1189, 1192,
1193, 1196, 1198, 1202, 1203, 1204, 1207, 1208, 1209, 1215,
1220, 1225, 1227, 1230, 1233, 1234, 1238, 1239, 1246, 1250,
1254, 1263, 1269, 1270, 1273, 1275, 1280, 1283, 1287, 1293,
1299, 1304, 1309, 1310, 1311, 1312, 1313, 1314, 1318, 1319,
1322, 1323, 1327, 1332, 1333, 1334, 1339, 1341, 1349, 1353,
1356, 1359, 1360, 1361, 1362, 1365, 1369, 1373, 1380, 1388,
1393, 1395, 1397, 1399, 1402, 1405, 1408, 1412, 1415, 1418,
1421, 1430, 1441, 1451, 1461, 1471, 1474, 1477, 1480, 1483,
1484, 1488, 1494, 1495, 1499, 1504, 1506, 1509, 1512, 1515,
1518, 1519, 1523, 1527, 1528, 1531, 1536, 1539, 1542, 1544,
1547, 1550, 1555, 1556, 1559, 1563, 1565, 1568, 1571, 1572,
1576, 1577, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587,
1588, 1589, 1590, 1591, 1592, 1593, 1594, 1596, 1600, 1601,
1602, 1603, 1606, 1608, 1612, 1616, 1620, 1625, 1629, 1633,
1635, 1639, 1646, 1649, 1654, 1659, 1660, 1661, 1663, 1667,
1671, 1674, 1677, 1679, 1681, 1686, 1690, 1693, 1694, 1698,
1703, 1704, 1708, 1710, 1712, 1714, 1718, 1719, 1720, 1723,
1727, 1731, 1736, 1778, 1783, 1785, 1788, 1791, 1793, 1796,
1801, 1809, 1812, 1815, 1816, 1820, 1826, 1833, 1857, 1867,
1871, 1876, 1882, 1886, 1893, 1903, 1913, 1923, 1925, 1928,
1931, 1935, 1937, 1941, 1943, 1945, 1947, 1949, 1951, 1953,
1955, 1957, 1959, 1961, 1963, 1965, 1967, 1969, 1973, 1976,
1979, 1985, 1989, 1991, 1998, 2000, 2002, 2005, 2008, 2010,
2012, 2016, 2017, 2021, 2023, 2025, 2027, 2029, 2031, 2033,
2037, 2038, 2042, 2044, 2046, 2048, 2054, 2057, 2059, 2061,
2064, 2069, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084,
2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094,
2095, 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104,
2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2114, 2115,
2116, 2118, 2119, 2122, 2124, 2128, 2130, 2135, 2141, 2143,
2146, 2149, 2151, 2155, 2158, 2161, 2166, 2170, 2173, 2176,
2179, 2186, 2189, 2190, 2194, 2196, 2198, 2200, 2202, 2209,
2219, 2221, 2224, 2226, 2231, 2235, 2237, 2239, 2241, 2243,
2245, 2247, 2249, 2251, 2253, 2255, 2257, 2259, 2266, 2267,
2270, 2271, 2274, 2279, 2286, 2287, 2291, 2300, 2306, 2307,
2310, 2311, 2312, 2313, 2330, 2335, 2340, 2359, 2376, 2383,
2384, 2391, 2396, 2403, 2410, 2419, 2424, 2429, 2433, 2438,
2443, 2447, 2454, 2460, 2466, 2474, 2479, 2484, 2491, 2492,
2493, 2496, 2497, 2500, 2501, 2502, 2509, 2513, 2525, 2530,
2584, 2646, 2647, 2654, 2667, 2672, 2677, 2684, 2687, 2693,
2694, 2695, 2699, 2702, 2705, 2713, 2714, 2715, 2718, 2722,
2726, 2729, 2732, 2736, 2737, 2740, 2744, 2748, 2749, 2752,
2755, 2758, 2760, 2763, 2767, 2769, 2772, 2773, 2777, 2778,
2779, 2780, 2781, 2782, 2785, 2787, 2791, 2793, 2797, 2799,
2802, 2804, 2806, 2810, 2812, 2814, 2818, 2820, 2823, 2826,
2828, 2830, 2834, 2838, 2842, 2844, 2847, 2850, 2852, 2856,
2857, 2861, 2865, 2868, 2871, 2872, 2877, 2881, 2883, 2885,
2889, 2893, 2895, 2897, 2899, 2901, 2903, 2905, 2907, 2909,
2911, 2913, 2915, 2917, 2919, 2927, 2929, 2933, 2937, 2938,
2945, 2949, 2952, 2955, 2958, 2961, 2964, 2970, 2974, 2979,
2984, 2985, 2987, 2991, 2994, 3007, 3011, 3015, 3019, 3022,
3024, 3026, 3029, 3032, 3034, 3036, 3040, 3042, 3044, 3048,
3050, 3054, 3056, 3060, 3061, 3065, 3066, 3070, 3071, 3076,
3080, 3081, 3085, 3086, 3089, 3090, 3091, 3097, 3101, 3103,
3106, 3109, 3112, 3113, 3117, 3118, 3119, 3122, 3127, 3132,
3136, 3137, 3140, 3144, 3148, 3151, 3156, 3159, 3162, 3163,
3168, 3173, 3175, 3177, 3179, 3182, 3185, 3186, 3192, 3195,
3198, 3199, 3205, 3208, 3211, 3214, 3217, 3223, 3226, 3229,
3233, 3235, 3237, 3243, 3246, 3249, 3250, 3254, 3256, 3259,
3260, 3264, 3266, 3268, 3272, 3273, 3277, 3280, 3285, 3288,
3291, 3292, 3296, 3300, 3302, 3305, 3308, 3310, 3314, 3317,
3322, 3325, 3334, 3340, 3344, 3352, 3353, 3356, 3362, 3370,
3371, 3374, 3380, 3386, 3389, 3393, 3396, 3403, 3404, 3408,
3412, 3419, 3421, 3425, 3427, 3430, 3433, 3434, 3437, 3441,
3444, 3447, 3449, 3455, 3457, 3460, 3464, 3465, 3470, 3472,
3475, 3479, 3480, 3485, 3486, 3489, 3494, 3499, 3502, 3509,
3510, 3512, 3513, 3515, 3519, 3520, 3522, 3524, 3528, 3530,
3534, 3535, 3537, 3541, 3542, 3543, 3544, 3545, 3546, 3547,
3548, 3549, 3550, 3551, 3556, 3558, 3560, 3562, 3564, 3566,
3568, 3570, 3576, 3578, 3580, 3582, 3584, 3586, 3588, 3590,
3592, 3594, 3596, 3598, 3600, 3602, 3604, 3606, 3610, 3611,
3617, 3619, 3623, 3625, 3630, 3632, 3634, 3636, 3641, 3643,
3647, 3649, 3653, 3655, 3657, 3659, 3663, 3667, 3671, 3673,
3677, 3682, 3687, 3694, 3699, 3704, 3713, 3714, 3718, 3725,
3726, 3727, 3728, 3729, 3730, 3731, 3732, 3733, 3734, 3735,
3737, 3739, 3746, 3748, 3750, 3757, 3764, 3771, 3773, 3775,
3776, 3777, 3778, 3780, 3782, 3786, 3787, 3790, 3806, 3822,
3826, 3829, 3832, 3836, 3837, 3841, 3842, 3846, 3848, 3850,
3852, 3854, 3858, 3859, 3861, 3877, 3893, 3897, 3901, 3903,
3907, 3911, 3914, 3917, 3920, 3923, 3928, 3930, 3935, 3936,
3940, 3947, 3954, 3961, 3968, 3969, 3973, 3980, 3981, 3982,
3985, 3987, 3989, 3992, 3999, 4008, 4015, 4024, 4026, 4028,
4030, 4034, 4035, 4038, 4042, 4043, 4044, 4047, 4052, 4055,
4060, 4065, 4066, 4067, 4069, 4073, 4082, 4085, 4088, 4090,
4093, 4095, 4100, 4102, 4104, 4108, 4110, 4114, 4120, 4121,
4124, 4128, 4131, 4135, 4136, 4139, 4141, 4145, 4147, 4151,
4153, 4157, 4159, 4163, 4166, 4169, 4174, 4183, 4193, 4195,
4197, 4199, 4201, 4203, 4205, 4207, 4211, 4212, 4215, 4216,
4219, 4227, 4230, 4233, 4236, 4239, 4242, 4245, 4248, 4251,
4254, 4257, 4260, 4263, 4266, 4269, 4272, 4275, 4278, 4281,
4284, 4287, 4290, 4293, 4296, 4299, 4304, 4305, 4311, 4312,
4313, 4314, 4315, 4316, 4317, 4318, 4319, 4320, 4321, 4322,
4323, 4324, 4325, 4326, 4327, 4328, 4329, 4331, 4333, 4334,
4335, 4337, 4339, 4340, 4341, 4342, 4343, 4344, 4345, 4346,
4347, 4348, 4349, 4350
0, 558, 558, 560, 564, 565, 566, 567, 568, 569,
570, 571, 572, 573, 574, 575, 576, 577, 578, 579,
580, 581, 582, 583, 584, 592, 596, 600, 605, 606,
609, 611, 613, 617, 618, 622, 626, 628, 630, 632,
634, 638, 641, 644, 647, 650, 657, 661, 665, 670,
673, 676, 679, 682, 683, 686, 687, 689, 691, 695,
697, 699, 701, 705, 706, 713, 715, 717, 721, 722,
726, 730, 731, 735, 737, 744, 748, 750, 755, 761,
762, 764, 771, 772, 773, 777, 778, 784, 790, 791,
793, 795, 799, 800, 804, 807, 813, 814, 816, 818,
821, 826, 832, 835, 841, 845, 847, 850, 852, 854,
856, 858, 860, 862, 864, 866, 868, 877, 881, 883,
885, 887, 893, 897, 901, 903, 909, 916, 921, 926,
931, 939, 942, 945, 947, 948, 954, 960, 962, 965,
969, 970, 975, 976, 981, 982, 985, 986, 993, 1011,
1014, 1017, 1021, 1023, 1026, 1028, 1031, 1032, 1036, 1040,
1041, 1044, 1048, 1056, 1063, 1128, 1133, 1134, 1137, 1142,
1143, 1146, 1147, 1151, 1153, 1155, 1157, 1159, 1164, 1165,
1168, 1169, 1173, 1174, 1176, 1180, 1186, 1190, 1191, 1194,
1195, 1198, 1200, 1204, 1205, 1206, 1209, 1210, 1211, 1217,
1222, 1227, 1229, 1232, 1235, 1236, 1240, 1241, 1248, 1252,
1256, 1265, 1271, 1272, 1275, 1277, 1282, 1285, 1289, 1295,
1301, 1306, 1311, 1312, 1313, 1314, 1315, 1316, 1320, 1321,
1324, 1325, 1329, 1334, 1335, 1336, 1341, 1343, 1351, 1355,
1358, 1361, 1362, 1363, 1364, 1367, 1371, 1375, 1382, 1390,
1395, 1397, 1399, 1401, 1404, 1407, 1410, 1414, 1417, 1420,
1423, 1432, 1443, 1453, 1463, 1473, 1476, 1479, 1482, 1485,
1486, 1490, 1496, 1497, 1501, 1506, 1508, 1511, 1514, 1517,
1520, 1521, 1525, 1529, 1530, 1533, 1538, 1541, 1544, 1546,
1549, 1552, 1557, 1558, 1561, 1565, 1567, 1570, 1573, 1574,
1578, 1579, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589,
1590, 1591, 1592, 1593, 1594, 1595, 1596, 1598, 1602, 1603,
1604, 1605, 1608, 1610, 1614, 1618, 1622, 1627, 1631, 1635,
1637, 1641, 1648, 1651, 1656, 1661, 1662, 1663, 1665, 1669,
1673, 1676, 1679, 1681, 1683, 1688, 1692, 1695, 1696, 1700,
1705, 1706, 1710, 1712, 1714, 1716, 1720, 1721, 1722, 1725,
1729, 1733, 1738, 1780, 1785, 1787, 1790, 1793, 1795, 1798,
1803, 1811, 1814, 1817, 1818, 1822, 1828, 1835, 1859, 1869,
1873, 1878, 1884, 1888, 1895, 1905, 1915, 1925, 1927, 1930,
1933, 1937, 1939, 1943, 1945, 1947, 1949, 1951, 1953, 1955,
1957, 1959, 1961, 1963, 1965, 1967, 1969, 1971, 1975, 1978,
1981, 1987, 1991, 1993, 2000, 2002, 2004, 2007, 2010, 2012,
2014, 2018, 2019, 2023, 2025, 2027, 2029, 2031, 2033, 2035,
2039, 2040, 2044, 2046, 2048, 2050, 2056, 2059, 2061, 2063,
2066, 2071, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086,
2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096,
2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106,
2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2116, 2117,
2118, 2120, 2121, 2124, 2126, 2130, 2132, 2137, 2143, 2145,
2148, 2151, 2153, 2157, 2160, 2163, 2168, 2172, 2175, 2178,
2181, 2188, 2191, 2192, 2196, 2198, 2200, 2202, 2204, 2211,
2221, 2223, 2226, 2228, 2233, 2237, 2239, 2241, 2243, 2245,
2247, 2249, 2251, 2253, 2255, 2257, 2259, 2261, 2268, 2269,
2272, 2273, 2276, 2281, 2288, 2289, 2293, 2302, 2308, 2309,
2312, 2313, 2314, 2315, 2332, 2337, 2342, 2361, 2378, 2385,
2386, 2393, 2398, 2405, 2412, 2421, 2426, 2431, 2435, 2440,
2445, 2449, 2456, 2462, 2468, 2476, 2481, 2486, 2493, 2494,
2495, 2498, 2499, 2502, 2503, 2504, 2511, 2515, 2527, 2532,
2586, 2648, 2649, 2656, 2669, 2674, 2679, 2686, 2689, 2695,
2696, 2697, 2701, 2704, 2707, 2715, 2716, 2717, 2720, 2724,
2728, 2731, 2734, 2738, 2739, 2742, 2746, 2750, 2751, 2754,
2757, 2760, 2762, 2765, 2769, 2771, 2774, 2775, 2779, 2780,
2781, 2782, 2783, 2784, 2787, 2789, 2793, 2795, 2799, 2801,
2804, 2806, 2808, 2812, 2814, 2816, 2820, 2822, 2825, 2828,
2830, 2832, 2836, 2840, 2844, 2846, 2849, 2852, 2854, 2858,
2859, 2863, 2867, 2870, 2873, 2874, 2879, 2883, 2885, 2887,
2891, 2895, 2897, 2899, 2901, 2903, 2905, 2907, 2909, 2911,
2913, 2915, 2917, 2919, 2921, 2929, 2931, 2935, 2939, 2940,
2947, 2951, 2954, 2957, 2960, 2963, 2966, 2972, 2976, 2981,
2986, 2987, 2989, 2993, 2996, 3009, 3013, 3017, 3021, 3024,
3026, 3028, 3031, 3034, 3036, 3038, 3042, 3044, 3046, 3050,
3052, 3056, 3058, 3062, 3063, 3067, 3068, 3072, 3073, 3078,
3082, 3083, 3087, 3088, 3091, 3092, 3093, 3099, 3103, 3105,
3108, 3111, 3114, 3115, 3119, 3120, 3121, 3124, 3129, 3134,
3138, 3139, 3142, 3146, 3150, 3153, 3158, 3161, 3164, 3165,
3170, 3175, 3177, 3179, 3181, 3184, 3187, 3188, 3194, 3197,
3200, 3201, 3207, 3210, 3213, 3216, 3219, 3225, 3228, 3231,
3235, 3237, 3239, 3245, 3248, 3251, 3252, 3256, 3258, 3261,
3262, 3266, 3268, 3270, 3274, 3275, 3279, 3282, 3287, 3290,
3293, 3294, 3298, 3302, 3304, 3307, 3310, 3312, 3316, 3319,
3324, 3327, 3336, 3342, 3346, 3354, 3355, 3358, 3364, 3372,
3373, 3376, 3382, 3388, 3391, 3395, 3398, 3405, 3406, 3410,
3414, 3421, 3423, 3427, 3429, 3432, 3435, 3436, 3439, 3443,
3446, 3449, 3451, 3457, 3459, 3462, 3466, 3467, 3472, 3474,
3477, 3481, 3482, 3487, 3488, 3491, 3496, 3501, 3504, 3511,
3512, 3514, 3515, 3517, 3521, 3522, 3524, 3526, 3530, 3532,
3536, 3537, 3539, 3543, 3544, 3545, 3546, 3547, 3548, 3549,
3550, 3551, 3552, 3553, 3558, 3560, 3562, 3564, 3566, 3568,
3570, 3572, 3578, 3580, 3582, 3584, 3586, 3588, 3590, 3592,
3594, 3596, 3598, 3600, 3602, 3604, 3606, 3608, 3612, 3613,
3619, 3621, 3625, 3627, 3632, 3634, 3636, 3638, 3643, 3645,
3649, 3651, 3655, 3657, 3659, 3661, 3665, 3669, 3673, 3675,
3679, 3684, 3689, 3696, 3701, 3706, 3715, 3716, 3720, 3727,
3728, 3729, 3730, 3731, 3732, 3733, 3734, 3735, 3736, 3737,
3739, 3741, 3748, 3750, 3752, 3759, 3766, 3773, 3775, 3777,
3778, 3779, 3780, 3782, 3784, 3788, 3789, 3792, 3808, 3824,
3828, 3831, 3834, 3838, 3839, 3843, 3844, 3848, 3850, 3852,
3854, 3856, 3860, 3861, 3863, 3879, 3895, 3899, 3903, 3905,
3909, 3913, 3916, 3919, 3922, 3925, 3930, 3932, 3937, 3938,
3942, 3949, 3956, 3963, 3970, 3971, 3975, 3982, 3983, 3984,
3987, 3989, 3991, 3994, 4001, 4010, 4017, 4026, 4028, 4030,
4032, 4036, 4037, 4040, 4044, 4045, 4046, 4049, 4054, 4057,
4062, 4067, 4068, 4069, 4071, 4075, 4084, 4087, 4090, 4092,
4095, 4097, 4102, 4104, 4106, 4110, 4112, 4116, 4122, 4123,
4126, 4130, 4133, 4137, 4138, 4141, 4143, 4147, 4149, 4153,
4155, 4159, 4161, 4165, 4168, 4171, 4176, 4185, 4195, 4197,
4199, 4201, 4203, 4205, 4207, 4209, 4213, 4214, 4217, 4218,
4221, 4229, 4232, 4235, 4238, 4241, 4244, 4247, 4250, 4253,
4256, 4259, 4262, 4265, 4268, 4271, 4274, 4277, 4280, 4283,
4286, 4289, 4292, 4295, 4298, 4301, 4306, 4307, 4313, 4314,
4315, 4316, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4324,
4325, 4326, 4327, 4328, 4329, 4330, 4331, 4333, 4335, 4336,
4337, 4339, 4341, 4342, 4343, 4344, 4345, 4346, 4347, 4348,
4349, 4350, 4351, 4352
};
#endif
@ -10659,7 +10661,8 @@ int LexerState::yylex (
continue;
}
if ((c == '-') && (*ptr == '-')) {
if ((c == '-') && (*ptr == '-'))
{
/* single-line */
@ -10675,10 +10678,12 @@ int LexerState::yylex (
return -1;
continue;
}
else if ((c == '/') && (*ptr == '*')) {
else if ((c == '/') && (*ptr == '*'))
{
/* multi-line */
const TEXT& start_block = ptr[-1];
ptr++;
while (ptr < end) {
if ((c = *ptr++) == '*') {
@ -10692,7 +10697,13 @@ int LexerState::yylex (
}
}
if (ptr >= end)
{
// I need this to report the correct beginning of the block,
// since it's not a token really.
last_token = &start_block;
yyerror("unterminated block comment");
return -1;
}
ptr++;
continue;
}
@ -10745,6 +10756,7 @@ int LexerState::yylex (
{
if (buffer != string)
gds__free (buffer);
yyerror("unterminated string");
return -1;
}
// Care about multi-line constants and identifiers
@ -10805,7 +10817,7 @@ int LexerState::yylex (
}
yylval = (dsql_nod*) MAKE_string(buffer, p - buffer);
if (buffer != string)
gds__free (buffer);
gds__free (buffer);
return STRING;
}
@ -11223,7 +11235,7 @@ static void yyerror(const TEXT* error_string)
}
static void yyabandon (SSHORT sql_code,
static void yyabandon (SLONG sql_code,
ISC_STATUS error_symbol)
{
/**************************************
@ -11237,7 +11249,7 @@ static void yyabandon (SSHORT sql_code,
*
**************************************/
ERRD_post (isc_sqlerr, isc_arg_number, (SLONG) sql_code,
ERRD_post (isc_sqlerr, isc_arg_number, sql_code,
isc_arg_gds, error_symbol, 0);
}

View File

@ -94,8 +94,6 @@
#include "../jrd/err_proto.h"
#include "../jrd/intlobj_new.h"
static void yyerror(const TEXT*);
/* since UNIX isn't standard, we have to define
stuff which is in <limits.h> (which isn't available
on all UNIXes... */
@ -127,6 +125,9 @@ typedef dsql_nod* YYSTYPE;
#define YYDEBUG 1
#endif
#define YYMALLOC gds__alloc
#define YYFREE gds__free
static const char INTERNAL_FIELD_NAME[] = "DSQL internal"; /* NTX: placeholder */
static const char NULL_STRING[] = "";
@ -138,7 +139,6 @@ inline SLONG trigger_type_suffix(const int slot1, const int slot2, const int slo
dsql_nod* DSQL_parse;
//static void yyerror(const TEXT*); redeclaration.
#define YYPARSE_PARAM_TYPE
#define YYPARSE_PARAM USHORT client_dialect, USHORT db_dialect, USHORT parser_version, bool* stmt_ambiguous
@ -163,7 +163,9 @@ static bool short_int(dsql_nod*, SLONG*, SSHORT);
#endif
static void stack_nodes (dsql_nod*, DsqlNodStack&);
inline static int yylex (USHORT, USHORT, USHORT, bool*);
static void yyabandon (SSHORT, ISC_STATUS);
static void yyerror(const TEXT*);
static void yyabandon (SLONG, ISC_STATUS);
inline void check_bound(const char* const to, const char* const string)
{
@ -4867,7 +4869,8 @@ int LexerState::yylex (
continue;
}
if ((c == '-') && (*ptr == '-')) {
if ((c == '-') && (*ptr == '-'))
{
/* single-line */
@ -4883,10 +4886,12 @@ int LexerState::yylex (
return -1;
continue;
}
else if ((c == '/') && (*ptr == '*')) {
else if ((c == '/') && (*ptr == '*'))
{
/* multi-line */
const TEXT& start_block = ptr[-1];
ptr++;
while (ptr < end) {
if ((c = *ptr++) == '*') {
@ -4900,7 +4905,13 @@ int LexerState::yylex (
}
}
if (ptr >= end)
{
// I need this to report the correct beginning of the block,
// since it's not a token really.
last_token = &start_block;
yyerror("unterminated block comment");
return -1;
}
ptr++;
continue;
}
@ -4953,6 +4964,7 @@ int LexerState::yylex (
{
if (buffer != string)
gds__free (buffer);
yyerror("unterminated string");
return -1;
}
// Care about multi-line constants and identifiers
@ -5013,7 +5025,7 @@ int LexerState::yylex (
}
yylval = (dsql_nod*) MAKE_string(buffer, p - buffer);
if (buffer != string)
gds__free (buffer);
gds__free (buffer);
return STRING;
}
@ -5431,7 +5443,7 @@ static void yyerror(const TEXT* error_string)
}
static void yyabandon (SSHORT sql_code,
static void yyabandon (SLONG sql_code,
ISC_STATUS error_symbol)
{
/**************************************
@ -5445,6 +5457,6 @@ static void yyabandon (SSHORT sql_code,
*
**************************************/
ERRD_post (isc_sqlerr, isc_arg_number, (SLONG) sql_code,
ERRD_post (isc_sqlerr, isc_arg_number, sql_code,
isc_arg_gds, error_symbol, 0);
}