From 35d826aa300d82dc25689f39ee0e6b67b4a3c81c Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Sun, 13 May 2012 22:40:51 +0000 Subject: [PATCH] Corrigindo segfaults aleatorios em windows 64 --- screen.c | 8 +++++++- util.c | 12 ++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/screen.c b/screen.c index 2388438..777b606 100644 --- a/screen.c +++ b/screen.c @@ -264,6 +264,7 @@ void update_model_info(H3270 *session, int model, int cols, int rows) /* Update the model name. */ (void) sprintf(session->model_name, "327%c-%d%s",session->m3279 ? '9' : '8',session->model_num,session->extended ? "-E" : ""); + trace("%s: %p",__FUNCTION__,session->update_model); session->update_model(session, session->model_name,session->model_num,rows,cols); } @@ -634,7 +635,12 @@ void Error(H3270 *session, const char *fmt, ...) trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Error",fmt); va_start(arg_ptr, fmt); - popup_handler(session,session->widget,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr); + + if(session && session->sz == sizeof(H3270)) + popup_handler(session,session->widget,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr); + else + popup_handler(NULL,NULL,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr); + va_end(arg_ptr); } diff --git a/util.c b/util.c index 965ef6f..d4726ab 100644 --- a/util.c +++ b/util.c @@ -167,8 +167,8 @@ char * xs_vsprintf(const char *fmt, va_list args) char *r; #if defined(HAVE_VASPRINTF) /*[*/ (void) vasprintf(&r, fmt, args); - if (r == CN) - Error("Out of memory"); + if(!r) + Error(NULL,"Out of memory in %s",__FUNCTION__); return r; #else /*][*/ char buf[16384]; @@ -1098,7 +1098,7 @@ LIB3270_EXPORT void * lib3270_realloc(void *p, int len) { p = realloc(p, len); if(!p) - Error(NULL,"Out of memory"); + Error(NULL,"Out of memory in %s",__FUNCTION__); return p; } @@ -1114,7 +1114,7 @@ LIB3270_EXPORT void * lib3270_calloc(int elsize, int nelem, void *ptr) if(ptr) memset(ptr,0,sz); else - Error(NULL,"Out of memory"); + Error(NULL,"Out of memory in %s",__FUNCTION__); return ptr; } @@ -1127,7 +1127,7 @@ LIB3270_EXPORT void * lib3270_malloc(int len) r = malloc(len); if (r == (char *)NULL) { - Error(NULL,"Out of memory"); + Error(NULL,"Out of memory in %s",__FUNCTION__); return 0; } @@ -1142,7 +1142,7 @@ void * Calloc(size_t nelem, size_t elsize) char * r = malloc(sz); if(!r) - Error(NULL,"Out of memory"); + Error(NULL,"Out of memory in %s",__FUNCTION__); memset(r, 0, sz); return r; -- libgit2 0.21.2