Commit e57876ea authored by Olivier Bertrand's avatar Olivier Bertrand

- Fix MDEV-9279. Replacing exit(1) in yy_fatal_error by a longjmp.

  modified:   storage/connect/fmdlex.c
  modified:   storage/connect/plgdbutl.cpp
parent 2ce0043b
#include <setjmp.h>
#define yyFlexLexer fmdfFlexLexer #define yyFlexLexer fmdfFlexLexer
#define yy_create_buffer fmdf_create_buffer #define yy_create_buffer fmdf_create_buffer
#define yy_delete_buffer fmdf_delete_buffer #define yy_delete_buffer fmdf_delete_buffer
...@@ -506,13 +508,16 @@ YY_MALLOC_DECL ...@@ -506,13 +508,16 @@ YY_MALLOC_DECL
#define YY_BREAK break; #define YY_BREAK break;
#endif #endif
static jmp_buf env;
YY_DECL YY_DECL
{ {
register yy_state_type yy_current_state; register yy_state_type yy_current_state;
register char *yy_cp, *yy_bp; register char *yy_cp, *yy_bp;
register int yy_act; register int yy_act;
if (setjmp(env))
return -1;
/*************************************************************************/ /*************************************************************************/
/* Flex parser to analyze date format and produce input and/or output */ /* Flex parser to analyze date format and produce input and/or output */
...@@ -1316,7 +1321,7 @@ char msg[]; ...@@ -1316,7 +1321,7 @@ char msg[];
#endif #endif
{ {
(void) fprintf( stderr, "%s\n", msg ); (void) fprintf( stderr, "%s\n", msg );
exit( 1 ); longjmp(env, 1 );
} }
......
...@@ -135,7 +135,7 @@ CREATE TABLE t1 ...@@ -135,7 +135,7 @@ CREATE TABLE t1
Year int(4) FIELD_FORMAT='DATEPUB', Year int(4) FIELD_FORMAT='DATEPUB',
INDEX IX(ISBN) INDEX IX(ISBN)
) )
ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='bib0.json' LRECL=350 OPTION_LIST='Pretty=0'; ENGINE=CONNECT TABLE_TYPE=JSON FILE_NAME='bib0.json' LRECL=320 OPTION_LIST='Pretty=0';
SHOW INDEX FROM t1; SHOW INDEX FROM t1;
SELECT * FROM t1; SELECT * FROM t1;
DESCRIBE SELECT * FROM t1 WHERE ISBN = '9782212090819'; DESCRIBE SELECT * FROM t1 WHERE ISBN = '9782212090819';
......
...@@ -679,7 +679,8 @@ void PlugConvertConstant(PGLOBAL g, void* & value, short& type) ...@@ -679,7 +679,8 @@ void PlugConvertConstant(PGLOBAL g, void* & value, short& type)
/* non quoted blanks are not included in the output format. */ /* non quoted blanks are not included in the output format. */
/***********************************************************************/ /***********************************************************************/
PDTP MakeDateFormat(PGLOBAL g, PSZ dfmt, bool in, bool out, int flag) PDTP MakeDateFormat(PGLOBAL g, PSZ dfmt, bool in, bool out, int flag)
{ {
int rc;
PDTP pdp = (PDTP)PlugSubAlloc(g, NULL, sizeof(DATPAR)); PDTP pdp = (PDTP)PlugSubAlloc(g, NULL, sizeof(DATPAR));
if (trace) if (trace)
...@@ -708,7 +709,7 @@ PDTP MakeDateFormat(PGLOBAL g, PSZ dfmt, bool in, bool out, int flag) ...@@ -708,7 +709,7 @@ PDTP MakeDateFormat(PGLOBAL g, PSZ dfmt, bool in, bool out, int flag)
pthread_mutex_lock(&parmut); pthread_mutex_lock(&parmut);
#endif // !__WIN__ #endif // !__WIN__
#endif // THREAD #endif // THREAD
/*int rc =*/ fmdflex(pdp); rc = fmdflex(pdp);
#if defined(THREAD) #if defined(THREAD)
#if defined(__WIN__) #if defined(__WIN__)
LeaveCriticalSection((LPCRITICAL_SECTION)&parsec); LeaveCriticalSection((LPCRITICAL_SECTION)&parsec);
...@@ -718,9 +719,10 @@ PDTP MakeDateFormat(PGLOBAL g, PSZ dfmt, bool in, bool out, int flag) ...@@ -718,9 +719,10 @@ PDTP MakeDateFormat(PGLOBAL g, PSZ dfmt, bool in, bool out, int flag)
#endif // THREAD #endif // THREAD
if (trace) if (trace)
htrc("Done: in=%s out=%s\n", SVP(pdp->InFmt), SVP(pdp->OutFmt)); htrc("Done: in=%s out=%s rc=%d\n", SVP(pdp->InFmt), SVP(pdp->OutFmt), rc);
return pdp; return pdp;
} // end of MakeDateFormat } // end of MakeDateFormat
/***********************************************************************/ /***********************************************************************/
/* Extract the date from a formatted string according to format. */ /* Extract the date from a formatted string according to format. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment