summaryrefslogtreecommitdiffstats
path: root/src/include/memory_chunk.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/memory_chunk.h')
-rwxr-xr-xsrc/include/memory_chunk.h21
1 files changed, 8 insertions, 13 deletions
diff --git a/src/include/memory_chunk.h b/src/include/memory_chunk.h
index 978126e..6fd9d9a 100755
--- a/src/include/memory_chunk.h
+++ b/src/include/memory_chunk.h
@@ -23,10 +23,7 @@
#define MEMORY_CHUNK_H
#include <assert.h>
-#include <sys/types.h>
-#include <sys/stat.h>
#include <unistd.h>
-
#include <stdlib.h>
#include "stl_lite.h"
@@ -217,17 +214,17 @@ public:
/* free old data */
reset();
- struct stat stat_buf;
-
- int retval = stat(filename, &stat_buf);
-
- if ( retval )
- return false;
+ size_t file_size;
FILE* file = fopen(filename, "r");
if ( !file )
return false;
- int data_len = stat_buf.st_size;
+
+ fseek(file, 0, SEEK_END);
+ file_size = ftell(file);
+ fseek(file, 0, SEEK_SET);
+
+ int data_len = file_size;
void* data = malloc(data_len);
if ( !data ){
fclose(file);
@@ -236,9 +233,7 @@ public:
data_len = fread(data, 1, data_len, file);
set_chunk(data, data_len, free);
- //Fixes memory chunk end.
- if ( stat_buf.st_size > data_len )
- m_allocated = (char *) m_data_begin + stat_buf.st_size;
+
fclose(file);
return true;
}