Skip to content

Commit

Permalink
- Fix MDEV-9279. Replacing exit(1) in yy_fatal_error by a longjmp.
Browse files Browse the repository at this point in the history
  modified:   storage/connect/fmdlex.c
  modified:   storage/connect/plgdbutl.cpp
  • Loading branch information
Buggynours committed Dec 14, 2015
1 parent 2ce0043 commit e57876e
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 7 deletions.
9 changes: 7 additions & 2 deletions storage/connect/fmdlex.c
@@ -1,3 +1,5 @@
#include <setjmp.h>

#define yyFlexLexer fmdfFlexLexer
#define yy_create_buffer fmdf_create_buffer
#define yy_delete_buffer fmdf_delete_buffer
Expand Down Expand Up @@ -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 */
Expand Down Expand Up @@ -1316,7 +1321,7 @@ char msg[];
#endif
{
(void) fprintf( stderr, "%s\n", msg );
exit( 1 );
longjmp(env, 1 );
}


Expand Down
2 changes: 1 addition & 1 deletion storage/connect/mysql-test/connect/t/json.test
Expand Up @@ -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';
Expand Down
10 changes: 6 additions & 4 deletions storage/connect/plgdbutl.cpp
Expand Up @@ -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)
Expand Down Expand Up @@ -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);
Expand All @@ -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. */
Expand Down

0 comments on commit e57876e

Please sign in to comment.