commit 746330d2e7f49b0efcd096d92676f3d1577b9d04
parent 4fd32f84799ea4ebf68ed805a23cefde076a2e1a
Author: vaplv <vaplv@free.fr>
Date: Wed, 6 Sep 2017 09:59:07 +0200
Fix CL warnings and errors
Diffstat:
2 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/src/big_buffer.c b/src/big_buffer.c
@@ -15,13 +15,22 @@
#define _POSIX_C_SOURCE 200112L /* ftruncate support */
-#include <unistd.h>
#include "big_buffer.h"
+#ifdef COMPILER_CL
+ #include <io.h> /* _chsize support */
+#else
+ #include <unistd.h> /* ftruncate support */
+#endif
+
res_T
truncate__(FILE* file, const size_t sz)
{
ASSERT(file);
+#ifdef OS_WINDOWS
+ return _chsize(_fileno(file), (long)sz) == 0 ? RES_OK : RES_IO_ERR;
+#else
return ftruncate(fileno(file), (off_t)sz) == 0 ? RES_OK : RES_IO_ERR;
+#endif
}
diff --git a/src/mem_lifo_allocator.c b/src/mem_lifo_allocator.c
@@ -19,6 +19,9 @@
#include "mem_allocator.h"
#include "mem_lifo_allocator.h"
#include "mutex.h"
+#ifdef OS_WINDOWS
+ #include "io_c99.h"
+#endif
#include <string.h>
struct lifo_data {
@@ -80,10 +83,10 @@ lifo_alloc_aligned
data_size = ALIGN_SIZE(size, sizeof(int64_t));
entry_size = header_size + data_size + footer_size;
- ASSERT(data_size < ((1lu<<48)-1));
+ ASSERT(data_size < (((int64_t)1<<48)-1));
ASSERT(header_size < (1<<16)-1);
- header = (int64_t)(data_size | (header_size << 48));
- footer = (int64_t)(data_size | (1lu << 48));
+ header = (int64_t)(data_size | ((int64_t)header_size<<48));
+ footer = (int64_t)(data_size | ((int64_t)1<<48));
mutex_lock(lifo->mutex);
{ /* Critical section */
@@ -143,12 +146,12 @@ lifo_free(void* data, void* mem)
ptr = mem;
header = *(int64_t*)(ptr-sizeof(int64_t));
- data_size = header & ((1l<<48)-1);
+ data_size = header & (((int64_t)1<<48)-1);
pfooter = (int64_t*)(ptr + data_size);
end = ptr + data_size + sizeof(int64_t);
mutex_lock(lifo->mutex);
- *pfooter &= ~(1l<<48); /* No more in use */
+ *pfooter &= ~((int64_t)1<<48); /* No more in use */
if(end == lifo->top) { /* Pop */
size_t header_size = (size_t)(header >> 48);
char* top = ptr - header_size;
@@ -158,14 +161,14 @@ lifo_free(void* data, void* mem)
while(top != lifo->stack) { /* Pop all free entries */
ptr = top - sizeof(int64_t);
footer = *(int64_t*)ptr;
- if(footer & (1l<<48)) break; /* In use */
+ if(footer & ((int64_t)1<<48)) break; /* In use */
- data_size = footer & ((1l<<48)-1);
+ data_size = footer & (((int64_t)1<<48)-1);
ptr -= data_size;
header = *(int64_t*)(ptr-sizeof(int64_t));
- ASSERT(data_size == (size_t)(header & ((1l<<48)-1)));
- header_size = (size_t)(header >> 48);
+ ASSERT(data_size == (size_t)(header & (((int64_t)1<<48)-1)));
+ header_size = (size_t)(header>>48);
top = ptr - header_size;
lifo->remain += data_size + header_size + sizeof(int64_t)/*footer_size*/;
@@ -193,7 +196,7 @@ lifo_realloc
char* new_mem = lifo_alloc(data, size, filename, fileline);
if(!new_mem || !mem) return new_mem;
mem_header = *(int64_t*)((char*)mem - sizeof(int64_t));
- mem_size = (size_t)(mem_header & ((1l<<48)-1));
+ mem_size = (size_t)(mem_header & (((int64_t)1<<48)-1));
memcpy(new_mem, mem, mem_size);
lifo_free(data, mem);
return new_mem;
@@ -206,7 +209,7 @@ lifo_mem_size(void* data, void* mem)
int64_t header;
(void)data;
header = *(int64_t*)((char*)mem-sizeof(int64_t));
- return (size_t)(header & ((1l<<48)-1));
+ return (size_t)(header & (((int64_t)1<<48)-1));
}
static size_t