Browse Source

Bison 3.7 - fix "conversion from 'ptrdiff_t' to 'ulong', possible loss of data"

bb-10.2-kevgs
Vladislav Vaintroub 4 years ago
parent
commit
3504f70f7f
  1. 4
      sql/sql_parse.cc
  2. 4
      sql/sql_yacc.yy

4
sql/sql_parse.cc

@ -7226,10 +7226,10 @@ bool check_stack_overrun(THD *thd, long margin,
#define MY_YACC_INIT 1000 // Start with big alloc
#define MY_YACC_MAX 32000 // Because of 'short'
bool my_yyoverflow(short **yyss, YYSTYPE **yyvs, ulong *yystacksize)
bool my_yyoverflow(short **yyss, YYSTYPE **yyvs, size_t *yystacksize)
{
Yacc_state *state= & current_thd->m_parser_state->m_yacc;
ulong old_info=0;
size_t old_info=0;
DBUG_ASSERT(state);
if ((uint) *yystacksize >= MY_YACC_MAX)
return 1;

4
sql/sql_yacc.yy

@ -76,7 +76,7 @@ int yylex(void *yylval, void *yythd);
#define yyoverflow(A,B,C,D,E,F) \
{ \
ulong val= *(F); \
size_t val= *(F); \
if (my_yyoverflow((B), (D), &val)) \
{ \
yyerror(thd, (char*) (A)); \
@ -1024,7 +1024,7 @@ Virtual_column_info *add_virtual_expression(THD *thd, Item *expr)
}
%{
bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%}
%pure-parser /* We have threads */

Loading…
Cancel
Save