forked from enlightenment/efl
Evil: use static buffer to store error messages
Reviewers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D5394
This commit is contained in:
parent
196b6f1ba4
commit
771bb6e6a7
|
@ -64,11 +64,7 @@ _ecore_exe_close_cb(void *data,
|
|||
|
||||
/* FIXME : manage the STILL_ACTIVE returned error */
|
||||
if (!GetExitCodeProcess(exe->process, &exit_code))
|
||||
{
|
||||
char *msg = evil_last_error_get();
|
||||
DBG("%s", msg);
|
||||
free(msg);
|
||||
}
|
||||
DBG("%s", evil_last_error_get());
|
||||
|
||||
e->exit_code = exit_code;
|
||||
e->exited = 1;
|
||||
|
@ -498,16 +494,8 @@ _impl_ecore_exe_efl_object_finalize(Eo *obj, Ecore_Exe_Data *exe)
|
|||
if (!CreateProcess(shell, exe_cmd_buf, NULL, NULL, EINA_TRUE,
|
||||
run_pri | CREATE_SUSPENDED, NULL, NULL, &si, &pi))
|
||||
{
|
||||
char *msg;
|
||||
|
||||
msg = evil_last_error_get();
|
||||
if (msg)
|
||||
{
|
||||
WRN("Failed to create process %s: %s", exe_cmd_buf, msg);
|
||||
free(msg);
|
||||
}
|
||||
else
|
||||
WRN("Failed to create process %s: %ld", exe_cmd_buf, GetLastError());
|
||||
WRN("Failed to create process %s: %s",
|
||||
exe_cmd_buf, evil_last_error_get());
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
|
|
@ -2594,13 +2594,7 @@ _ecore_main_win32_objects_wait(DWORD objects_nbr,
|
|||
{
|
||||
ERR("Error when waiting threads.");
|
||||
if (result == WAIT_FAILED)
|
||||
{
|
||||
char *str;
|
||||
|
||||
str = evil_last_error_get();
|
||||
ERR("%s", str);
|
||||
free(str);
|
||||
}
|
||||
ERR("%s", evil_last_error_get());
|
||||
goto close_thread;
|
||||
}
|
||||
|
||||
|
@ -2755,11 +2749,7 @@ _ecore_main_win32_select(int nfds EINA_UNUSED,
|
|||
/* The result tells us the type of event we have. */
|
||||
if (result == WAIT_FAILED)
|
||||
{
|
||||
char *m;
|
||||
|
||||
m = evil_last_error_get();
|
||||
WRN("%s", m);
|
||||
free(m);
|
||||
WRN("%s", evil_last_error_get());
|
||||
res = -1;
|
||||
}
|
||||
else if (result == WAIT_TIMEOUT)
|
||||
|
|
|
@ -64,14 +64,7 @@ _ecore_con_local_win32_server_read_client_handler(void *data, Ecore_Win32_Handle
|
|||
if (broken_pipe)
|
||||
{
|
||||
#if 0
|
||||
char *msg;
|
||||
|
||||
msg = evil_last_error_get();
|
||||
if (msg)
|
||||
{
|
||||
ecore_con_event_client_error(cl, msg);
|
||||
free(msg);
|
||||
}
|
||||
ecore_con_event_client_error(cl, evil_last_error_get());
|
||||
#endif
|
||||
_ecore_con_client_kill(obj);
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
|
@ -99,12 +92,7 @@ _ecore_con_local_win32_server_peek_client_handler(void *data, Ecore_Win32_Handle
|
|||
return ECORE_CALLBACK_RENEW;
|
||||
|
||||
#if 0
|
||||
msg = evil_last_error_get();
|
||||
if (msg)
|
||||
{
|
||||
ecore_con_event_server_error(host_svr, msg);
|
||||
free(msg);
|
||||
}
|
||||
ecore_con_event_server_error(host_svr, evil_last_error_get());
|
||||
#endif
|
||||
_ecore_con_server_kill(cl->host_server);
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
|
@ -126,12 +114,7 @@ _ecore_con_local_win32_client_peek_server_handler(void *data, Ecore_Win32_Handle
|
|||
if (!ResetEvent(svr->event_peek))
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
#if 0
|
||||
msg = evil_last_error_get();
|
||||
if (msg)
|
||||
{
|
||||
ecore_con_event_server_error(svr, msg);
|
||||
free(msg);
|
||||
}
|
||||
ecore_con_event_server_error(svr, evil_last_error_get());
|
||||
#endif
|
||||
_ecore_con_server_kill(obj);
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
|
@ -172,14 +155,7 @@ _ecore_con_local_win32_client_read_server_handler(void *data, Ecore_Win32_Handle
|
|||
if (broken_pipe)
|
||||
{
|
||||
#if 0
|
||||
char *msg;
|
||||
|
||||
msg = evil_last_error_get();
|
||||
if (msg)
|
||||
{
|
||||
ecore_con_event_server_error(svr, msg);
|
||||
free(msg);
|
||||
}
|
||||
ecore_con_event_server_error(svr, evil_last_error_get());
|
||||
#endif
|
||||
_ecore_con_server_kill(obj);
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
|
@ -686,14 +662,7 @@ ecore_con_local_win32_server_flush(Ecore_Con_Server *obj)
|
|||
res = WriteFile(svr->pipe, eina_binbuf_string_get(svr->buf) + svr->write_buf_offset, num, &written, NULL);
|
||||
if (!res)
|
||||
{
|
||||
char *msg;
|
||||
|
||||
msg = evil_last_error_get();
|
||||
if (msg)
|
||||
{
|
||||
ecore_con_event_server_error(obj, msg);
|
||||
free(msg);
|
||||
}
|
||||
ecore_con_event_server_error(obj, evil_last_error_get());
|
||||
_ecore_con_server_kill(obj);
|
||||
}
|
||||
|
||||
|
@ -737,14 +706,7 @@ ecore_con_local_win32_client_flush(Ecore_Con_Client *obj)
|
|||
res = WriteFile(svr->pipe, eina_binbuf_string_get(cl->buf) + cl->buf_offset, num, &written, NULL);
|
||||
if (!res)
|
||||
{
|
||||
char *msg;
|
||||
|
||||
msg = evil_last_error_get();
|
||||
if (msg)
|
||||
{
|
||||
ecore_con_event_client_error(obj, msg);
|
||||
free(msg);
|
||||
}
|
||||
ecore_con_event_client_error(obj, evil_last_error_get());
|
||||
_ecore_con_client_kill(obj);
|
||||
}
|
||||
|
||||
|
|
|
@ -66,9 +66,8 @@ _efl_net_dialer_windows_efl_net_dialer_dial(Eo *o, Efl_Net_Dialer_Windows_Data *
|
|||
case ERROR_INVALID_NAME: return EADDRNOTAVAIL;
|
||||
default:
|
||||
{
|
||||
char *msg = evil_format_message(win32err);
|
||||
ERR("CreateFile(%s): Unexpected win32err=%lu (%s)", pd->address_dial, win32err, msg);
|
||||
free(msg);
|
||||
ERR("CreateFile(%s): Unexpected win32err=%lu (%s)",
|
||||
pd->address_dial, win32err, evil_format_message(win32err));
|
||||
return EINVAL;
|
||||
}
|
||||
}
|
||||
|
@ -85,9 +84,8 @@ _efl_net_dialer_windows_efl_net_dialer_dial(Eo *o, Efl_Net_Dialer_Windows_Data *
|
|||
snprintf(cstr, sizeof(cstr), "%s:%lu", address, cpid);
|
||||
else
|
||||
{
|
||||
char *msg = evil_last_error_get();
|
||||
WRN("server=%p (%s) could not GetNamedPipeClientProcessId(o): %s", o, address, msg);
|
||||
free(msg);
|
||||
WRN("server=%p (%s) could not GetNamedPipeClientProcessId(o): %s",
|
||||
o, address, evil_last_error_get());
|
||||
eina_strlcpy(cstr, address, sizeof(cstr));
|
||||
}
|
||||
|
||||
|
@ -95,9 +93,8 @@ _efl_net_dialer_windows_efl_net_dialer_dial(Eo *o, Efl_Net_Dialer_Windows_Data *
|
|||
snprintf(sstr, sizeof(sstr), "%s:%lu", address, spid);
|
||||
else
|
||||
{
|
||||
char *msg = evil_last_error_get();
|
||||
WRN("server=%p (%s) could not GetNamedPipeServerProcessId(o): %s", o, address, msg);
|
||||
free(msg);
|
||||
WRN("server=%p (%s) could not GetNamedPipeServerProcessId(o): %s",
|
||||
o, address, evil_last_error_get());
|
||||
eina_strlcpy(sstr, address, sizeof(sstr));
|
||||
}
|
||||
|
||||
|
|
|
@ -61,9 +61,8 @@ _efl_net_server_windows_client_listen_success(void *data, Eo *client, DWORD used
|
|||
snprintf(cstr, sizeof(cstr), "%s:%lu", addr, cpid);
|
||||
else
|
||||
{
|
||||
char *msg = evil_last_error_get();
|
||||
WRN("server=%p (%s) could not GetNamedPipeClientProcessId(client): %s", o, addr, msg);
|
||||
free(msg);
|
||||
WRN("server=%p (%s) could not GetNamedPipeClientProcessId(client): %s",
|
||||
o, addr, evil_last_error_get());
|
||||
eina_strlcpy(cstr, addr, sizeof(cstr));
|
||||
}
|
||||
|
||||
|
@ -71,9 +70,8 @@ _efl_net_server_windows_client_listen_success(void *data, Eo *client, DWORD used
|
|||
snprintf(sstr, sizeof(sstr), "%s:%lu", addr, spid);
|
||||
else
|
||||
{
|
||||
char *msg = evil_last_error_get();
|
||||
WRN("server=%p (%s) could not GetNamedPipeServerProcessId(client): %s", o, addr, msg);
|
||||
free(msg);
|
||||
WRN("server=%p (%s) could not GetNamedPipeServerProcessId(client): %s",
|
||||
o, addr, evil_last_error_get());
|
||||
eina_strlcpy(sstr, addr, sizeof(sstr));
|
||||
}
|
||||
|
||||
|
@ -225,8 +223,8 @@ _efl_net_server_windows_client_new(Eo *o, Efl_Net_Server_Windows_Data *pd)
|
|||
case ERROR_INVALID_PARAMETER: return EINVAL;
|
||||
default:
|
||||
{
|
||||
char *msg = evil_format_message(win32err);
|
||||
ERR("Unexpected win32err=%lu (%s)", win32err, msg);
|
||||
ERR("Unexpected win32err=%lu (%s)",
|
||||
win32err, evil_format_message(win32err));
|
||||
return EINVAL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -737,16 +737,9 @@ eina_file_open(const char *path, Eina_Bool shared)
|
|||
|
||||
if (handle == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
char *msg;
|
||||
|
||||
msg = evil_last_error_get();
|
||||
if (msg)
|
||||
{
|
||||
WRN("eina_file_open() failed with file %s: %s", filename, msg);
|
||||
free(msg);
|
||||
}
|
||||
else
|
||||
goto free_file;
|
||||
WRN("eina_file_open() failed with file %s: %s",
|
||||
filename, evil_last_error_get());
|
||||
goto free_file;
|
||||
}
|
||||
|
||||
if (!GetFileAttributesEx(filename, GetFileExInfoStandard, &fad))
|
||||
|
|
|
@ -191,14 +191,7 @@ _eio_monitor_win32_cb(void *data, Ecore_Win32_Handler *wh EINA_UNUSED)
|
|||
&w->overlapped,
|
||||
NULL))
|
||||
{
|
||||
char *msg;
|
||||
|
||||
msg = evil_last_error_get();
|
||||
if (msg)
|
||||
{
|
||||
ERR("%s", msg);
|
||||
free(msg);
|
||||
}
|
||||
ERR("%s", evil_last_error_get());
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
|
@ -271,14 +264,7 @@ _eio_monitor_win32_watcher_new(Eio_Monitor *monitor,
|
|||
&w->overlapped,
|
||||
NULL))
|
||||
{
|
||||
char *msg;
|
||||
|
||||
msg = evil_last_error_get();
|
||||
if (msg)
|
||||
{
|
||||
ERR("%s", msg);
|
||||
free(msg);
|
||||
}
|
||||
ERR("%s", evil_last_error_get());
|
||||
goto close_event;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ static int _dl_err_viewed = 0;
|
|||
static void
|
||||
_dl_get_last_error(char *desc)
|
||||
{
|
||||
char *str;
|
||||
const char *str;
|
||||
size_t l1;
|
||||
size_t l2;
|
||||
|
||||
|
@ -45,7 +45,6 @@ _dl_get_last_error(char *desc)
|
|||
memcpy(_dl_err + l1, str, l2);
|
||||
_dl_err[l1 + l2] = '\0';
|
||||
}
|
||||
free(str);
|
||||
_dl_err_viewed = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ extern LONGLONG _evil_time_freq;
|
|||
extern LONGLONG _evil_time_count;
|
||||
extern long _evil_time_second;
|
||||
|
||||
extern DWORD _evil_tls_index;
|
||||
|
||||
long _evil_systemtime_to_time(SYSTEMTIME st);
|
||||
|
||||
int
|
||||
|
@ -96,3 +98,41 @@ evil_shutdown(void)
|
|||
|
||||
return _evil_init_count;
|
||||
}
|
||||
|
||||
BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved)
|
||||
{
|
||||
LPVOID data;
|
||||
|
||||
switch (reason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
_evil_tls_index = TlsAlloc();
|
||||
if (_evil_tls_index == TLS_OUT_OF_INDEXES)
|
||||
return FALSE;
|
||||
case DLL_THREAD_ATTACH:
|
||||
data = (LPVOID)LocalAlloc(LPTR, 4096);
|
||||
if (!data)
|
||||
return FALSE;
|
||||
if (!TlsSetValue(_evil_tls_index, data))
|
||||
return FALSE;
|
||||
break;
|
||||
case DLL_THREAD_DETACH:
|
||||
data = TlsGetValue(_evil_tls_index);
|
||||
if (data)
|
||||
LocalFree((HLOCAL)data);
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
data = TlsGetValue(_evil_tls_index);
|
||||
if (data)
|
||||
LocalFree((HLOCAL)data);
|
||||
TlsFree(_evil_tls_index);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
||||
(void)inst;
|
||||
(void)reserved;
|
||||
}
|
||||
|
|
|
@ -83,12 +83,8 @@ mmap(void *addr EVIL_UNUSED,
|
|||
fm = CreateFileMapping(handle, NULL, protect, 0, 0, NULL);
|
||||
if (!fm)
|
||||
{
|
||||
char *str;
|
||||
|
||||
str = evil_last_error_get();
|
||||
fprintf(stderr, "[Evil] [mmap] CreateFileMapping failed: %s\n", str);
|
||||
free(str);
|
||||
|
||||
fprintf(stderr, "[Evil] [mmap] CreateFileMapping failed: %s\n",
|
||||
evil_last_error_get());
|
||||
return MAP_FAILED;
|
||||
}
|
||||
|
||||
|
@ -117,12 +113,8 @@ mmap(void *addr EVIL_UNUSED,
|
|||
|
||||
if (!data)
|
||||
{
|
||||
char *str;
|
||||
|
||||
str = evil_last_error_get();
|
||||
fprintf(stderr, "[Evil] [mmap] MapViewOfFile failed: %s\n", str);
|
||||
free(str);
|
||||
|
||||
fprintf(stderr, "[Evil] [mmap] MapViewOfFile failed: %s\n",
|
||||
evil_last_error_get());
|
||||
return MAP_FAILED;
|
||||
}
|
||||
|
||||
|
@ -137,13 +129,8 @@ munmap(void *addr,
|
|||
|
||||
res = UnmapViewOfFile(addr);
|
||||
if (!res)
|
||||
{
|
||||
char *str;
|
||||
|
||||
str = evil_last_error_get();
|
||||
fprintf(stderr, "[Evil] [munmap] UnmapViewOfFile failed: %s\n", str);
|
||||
free(str);
|
||||
}
|
||||
fprintf(stderr, "[Evil] [munmap] UnmapViewOfFile failed: %s\n",
|
||||
evil_last_error_get());
|
||||
|
||||
return (res == 0) ? -1 : 0;
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "evil_macro.h"
|
||||
#include "evil_util.h"
|
||||
|
||||
DWORD _evil_tls_index;
|
||||
|
||||
/* static void _evil_error_display(const char *fct, LONG res); */
|
||||
static void _evil_last_error_display(const char *fct);
|
||||
|
@ -113,12 +114,12 @@ evil_utf16_to_utf8(const wchar_t *text16)
|
|||
return text8;
|
||||
}
|
||||
|
||||
char *
|
||||
const char *
|
||||
evil_format_message(long err)
|
||||
{
|
||||
char *buf;
|
||||
LPTSTR msg;
|
||||
char *str;
|
||||
char *disp;
|
||||
|
||||
if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL,
|
||||
|
@ -128,10 +129,10 @@ evil_format_message(long err)
|
|||
0,
|
||||
NULL))
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, 4096, "FormatMessage failed with error %ld\n", GetLastError());
|
||||
return strdup(buf);
|
||||
buf = (char *)TlsGetValue(_evil_tls_index);
|
||||
snprintf(buf, 4096,
|
||||
"FormatMessage failed with error %ld\n", GetLastError());
|
||||
return (const char *)buf;
|
||||
}
|
||||
|
||||
#ifdef UNICODE
|
||||
|
@ -140,15 +141,8 @@ evil_format_message(long err)
|
|||
str = msg;
|
||||
#endif /* UNICODE */
|
||||
|
||||
disp = (char *)malloc((strlen(str) + strlen("(00000) ") + 1) * sizeof(char));
|
||||
if (!disp)
|
||||
{
|
||||
LocalFree(msg);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
snprintf(disp, strlen(str) + strlen("(00000) ") + 1,
|
||||
"(%5ld) %s", err, str);
|
||||
buf = (char *)TlsGetValue(_evil_tls_index);
|
||||
snprintf(buf, 4096, "(%5ld) %s", err, str);
|
||||
|
||||
#ifdef UNICODE
|
||||
free(str);
|
||||
|
@ -156,10 +150,10 @@ evil_format_message(long err)
|
|||
|
||||
LocalFree(msg);
|
||||
|
||||
return disp;
|
||||
return (const char *)buf;
|
||||
}
|
||||
|
||||
char *
|
||||
const char *
|
||||
evil_last_error_get(void)
|
||||
{
|
||||
DWORD err;
|
||||
|
@ -171,11 +165,7 @@ evil_last_error_get(void)
|
|||
static void
|
||||
_evil_last_error_display(const char *fct)
|
||||
{
|
||||
char *error;
|
||||
|
||||
error = evil_last_error_get();
|
||||
fprintf(stderr, "[Evil] [%s] ERROR: %s\n", fct, error);
|
||||
free(error);
|
||||
fprintf(stderr, "[Evil] [%s] ERROR: %s\n", fct, evil_last_error_get());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -59,9 +59,9 @@ EAPI char *evil_wchar_to_char(const wchar_t *text);
|
|||
*/
|
||||
EAPI char *evil_utf16_to_utf8(const wchar_t *text);
|
||||
|
||||
EAPI char *evil_format_message(long err);
|
||||
EAPI const char *evil_format_message(long err);
|
||||
|
||||
EAPI char *evil_last_error_get(void);
|
||||
EAPI const char *evil_last_error_get(void);
|
||||
|
||||
/**
|
||||
* @brief Return a dir to store temporary files.
|
||||
|
|
Loading…
Reference in New Issue