Fix warnings on Windows

This commit is contained in:
Alexey Romanov
2014-10-11 00:17:24 +04:00
parent 233a2c1559
commit 78ac8991eb
2 changed files with 44 additions and 36 deletions

View File

@@ -1,5 +1,6 @@
#include "sqlite3_drv.h" #include "sqlite3_drv.h"
#include <stdarg.h> #include <stdarg.h>
#include <limits.h>
// MSVC needs "__inline" instead of "inline" in C-source files. // MSVC needs "__inline" instead of "inline" in C-source files.
#if defined(_MSC_VER) #if defined(_MSC_VER)
@@ -171,47 +172,53 @@ static void stop(ErlDrvData handle) {
driver_free(driver_data); driver_free(driver_data);
} }
static inline int output_error(sqlite3_drv_t *drv, int error_code, const char *error);
// Handle input from Erlang VM // Handle input from Erlang VM
static ErlDrvSSizeT control( static ErlDrvSSizeT control(
ErlDrvData drv_data, unsigned int command, char *buf, ErlDrvData drv_data, unsigned int command, char *buf,
ErlDrvSizeT len, char **rbuf, ErlDrvSizeT rlen) { ErlDrvSizeT len, char **rbuf, ErlDrvSizeT rlen) {
sqlite3_drv_t* driver_data = (sqlite3_drv_t*) drv_data; sqlite3_drv_t* driver_data = (sqlite3_drv_t*) drv_data;
switch (command) { if (len > INT_MAX) {
case CMD_SQL_EXEC: output_error(driver_data, SQLITE_MISUSE, "Command size doesn't fit into int type");
sql_exec(driver_data, buf, len); } else {
break; switch (command) {
case CMD_SQL_BIND_AND_EXEC: case CMD_SQL_EXEC:
sql_bind_and_exec(driver_data, buf, len); sql_exec(driver_data, buf, (int) len);
break; break;
case CMD_PREPARE: case CMD_SQL_BIND_AND_EXEC:
prepare(driver_data, buf, len); sql_bind_and_exec(driver_data, buf, (int) len);
break; break;
case CMD_PREPARED_BIND: case CMD_PREPARE:
prepared_bind(driver_data, buf, len); prepare(driver_data, buf, (int) len);
break; break;
case CMD_PREPARED_STEP: case CMD_PREPARED_BIND:
prepared_step(driver_data, buf, len); prepared_bind(driver_data, buf, (int) len);
break; break;
case CMD_PREPARED_RESET: case CMD_PREPARED_STEP:
prepared_reset(driver_data, buf, len); prepared_step(driver_data, buf, (int) len);
break; break;
case CMD_PREPARED_CLEAR_BINDINGS: case CMD_PREPARED_RESET:
prepared_clear_bindings(driver_data, buf, len); prepared_reset(driver_data, buf, (int) len);
break; break;
case CMD_PREPARED_FINALIZE: case CMD_PREPARED_CLEAR_BINDINGS:
prepared_finalize(driver_data, buf, len); prepared_clear_bindings(driver_data, buf, (int) len);
break; break;
case CMD_PREPARED_COLUMNS: case CMD_PREPARED_FINALIZE:
prepared_columns(driver_data, buf, len); prepared_finalize(driver_data, buf, (int) len);
break; break;
case CMD_SQL_EXEC_SCRIPT: case CMD_PREPARED_COLUMNS:
sql_exec_script(driver_data, buf, len); prepared_columns(driver_data, buf, (int) len);
break; break;
case CMD_ENABLE_LOAD_EXTENSION: case CMD_SQL_EXEC_SCRIPT:
enable_load_extension(driver_data, buf, len); sql_exec_script(driver_data, buf, (int) len);
break; break;
default: case CMD_ENABLE_LOAD_EXTENSION:
unknown(driver_data, buf, len); enable_load_extension(driver_data, buf, (int) len);
break;
default:
unknown(driver_data, buf, (int) len);
}
} }
return 0; return 0;
} }

View File

@@ -21,6 +21,7 @@
#if defined(_MSC_VER) #if defined(_MSC_VER)
#pragma warning(disable: 4201) #pragma warning(disable: 4201)
#pragma warning(disable: 4127)
#endif #endif
// Path to file where data will be stored. // Path to file where data will be stored.