mirror of
https://github.com/MariaDB/server.git
synced 2025-08-09 22:24:09 +03:00
- Fix MDEV-9279. Replacing exit(1) in yy_fatal_error by a longjmp.
modified: storage/connect/fmdlex.c modified: storage/connect/plgdbutl.cpp
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
#include <setjmp.h>
|
||||
|
||||
#define yyFlexLexer fmdfFlexLexer
|
||||
#define yy_create_buffer fmdf_create_buffer
|
||||
#define yy_delete_buffer fmdf_delete_buffer
|
||||
@@ -506,13 +508,16 @@ YY_MALLOC_DECL
|
||||
#define YY_BREAK break;
|
||||
#endif
|
||||
|
||||
static jmp_buf env;
|
||||
|
||||
YY_DECL
|
||||
{
|
||||
register yy_state_type yy_current_state;
|
||||
register char *yy_cp, *yy_bp;
|
||||
register int yy_act;
|
||||
|
||||
|
||||
if (setjmp(env))
|
||||
return -1;
|
||||
|
||||
/*************************************************************************/
|
||||
/* Flex parser to analyze date format and produce input and/or output */
|
||||
@@ -1316,7 +1321,7 @@ char msg[];
|
||||
#endif
|
||||
{
|
||||
(void) fprintf( stderr, "%s\n", msg );
|
||||
exit( 1 );
|
||||
longjmp(env, 1 );
|
||||
}
|
||||
|
||||
|
||||
|
@@ -135,7 +135,7 @@ CREATE TABLE t1
|
||||
Year int(4) FIELD_FORMAT='DATEPUB',
|
||||
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;
|
||||
SELECT * FROM t1;
|
||||
DESCRIBE SELECT * FROM t1 WHERE ISBN = '9782212090819';
|
||||
|
@@ -679,7 +679,8 @@ void PlugConvertConstant(PGLOBAL g, void* & value, short& type)
|
||||
/* non quoted blanks are not included in the output format. */
|
||||
/***********************************************************************/
|
||||
PDTP MakeDateFormat(PGLOBAL g, PSZ dfmt, bool in, bool out, int flag)
|
||||
{
|
||||
{
|
||||
int rc;
|
||||
PDTP pdp = (PDTP)PlugSubAlloc(g, NULL, sizeof(DATPAR));
|
||||
|
||||
if (trace)
|
||||
@@ -708,7 +709,7 @@ PDTP MakeDateFormat(PGLOBAL g, PSZ dfmt, bool in, bool out, int flag)
|
||||
pthread_mutex_lock(&parmut);
|
||||
#endif // !__WIN__
|
||||
#endif // THREAD
|
||||
/*int rc =*/ fmdflex(pdp);
|
||||
rc = fmdflex(pdp);
|
||||
#if defined(THREAD)
|
||||
#if defined(__WIN__)
|
||||
LeaveCriticalSection((LPCRITICAL_SECTION)&parsec);
|
||||
@@ -718,9 +719,10 @@ PDTP MakeDateFormat(PGLOBAL g, PSZ dfmt, bool in, bool out, int flag)
|
||||
#endif // THREAD
|
||||
|
||||
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;
|
||||
} // end of MakeDateFormat
|
||||
} // end of MakeDateFormat
|
||||
|
||||
/***********************************************************************/
|
||||
/* Extract the date from a formatted string according to format. */
|
||||
|
Reference in New Issue
Block a user