Fix: include cached ram in calculation
This commit is contained in:
parent
a7660901ec
commit
94dc4821ba
1 changed files with 21 additions and 3 deletions
|
@ -24,6 +24,25 @@ bool open_file(const char* path, FILE** file, struct stat* file_stat) {
|
|||
return true;
|
||||
}
|
||||
|
||||
unsigned long get_available_memory() {
|
||||
FILE* f;
|
||||
struct stat statOfFile;
|
||||
if (!open_file("/proc/meminfo", &f, &statOfFile)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
char line[100];
|
||||
while (fgets(line, sizeof(line), f)) {
|
||||
unsigned long available_memory;
|
||||
if (sscanf(line, "MemAvailable: %ld kB", &available_memory) == 1) {
|
||||
fclose(f);
|
||||
return available_memory * 1000;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t* read_file(const char* path, size_t* size) {
|
||||
// Read the contents of the file specified by path into a heap-allocated
|
||||
// buffer and return a pointer to that buffer.
|
||||
|
@ -33,10 +52,9 @@ uint8_t* read_file(const char* path, size_t* size) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
struct sysinfo info;
|
||||
int r = sysinfo(&info);
|
||||
unsigned long available_memory = get_available_memory();
|
||||
|
||||
if (r != 0 || info.freeram < (unsigned long)(statOfFile.st_size * 2)) {
|
||||
if (available_memory < (unsigned long)(statOfFile.st_size * 2)) {
|
||||
errno = ENOMEM;
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue