FILE *file;
file = safe_fopen((char *)(path.untagged() + 1),
- (char *)(mode.untagged() + 1));
+ (char *)(mode.untagged() + 1));
ctx->push(allot_alien(file));
}
data_root<byte_array> buf(allot_uninitialized_array<byte_array>(size),this);
- for(;;)
+ int c = safe_fread(buf.untagged() + 1,1,size,file);
+ if(c == 0)
{
- int c = safe_fread(buf.untagged() + 1,1,size,file);
- if(c == 0)
- {
- if(feof(file))
- {
- ctx->push(false_object);
- break;
- }
- else
- io_error();
- }
+ if(feof(file))
+ ctx->push(false_object);
else
+ io_error();
+ }
+ else
+ {
+ if(feof(file))
{
- if(feof(file))
- {
- byte_array *new_buf = allot_byte_array(c);
- memcpy(new_buf + 1, buf.untagged() + 1,c);
- buf = new_buf;
- }
-
- ctx->push(buf.value());
- break;
+ byte_array *new_buf = allot_byte_array(c);
+ memcpy(new_buf + 1, buf.untagged() + 1,c);
+ buf = new_buf;
}
+
+ ctx->push(buf.value());
}
}
- EPOCH_OFFSET) / 10;
}
-/* On VirtualBox, QueryPerformanceCounter does not increment
-the high part every time the low part overflows. Workaround. */
u64 nano_count()
{
LARGE_INTEGER count;
if(ret == 0)
fatal_error("QueryPerformanceFrequency", 0);
- if(count.LowPart < lo)
- hi += 1;
+#ifdef FACTOR_64
+ hi = count.HighPart;
+#else
+ /* On VirtualBox, QueryPerformanceCounter does not increment
+ the high part every time the low part overflows. Workaround. */
+ if(lo > count.LowPart)
+ hi++;
+#endif
lo = count.LowPart;
return (u64)((((u64)hi << 32) | (u64)lo)*(1000000000.0/frequency.QuadPart));
case STATUS_FLOAT_UNDERFLOW:
case STATUS_FLOAT_MULTIPLE_FAULTS:
case STATUS_FLOAT_MULTIPLE_TRAPS:
-#ifdef FACTOR_AMD64
+#ifdef FACTOR_64
signal_fpu_status = fpu_status(MXCSR(c));
#else
signal_fpu_status = fpu_status(X87SW(c) | MXCSR(c));
long getpagesize()
{
static long g_pagesize = 0;
- if (! g_pagesize)
+ if(!g_pagesize)
{
SYSTEM_INFO system_info;
GetSystemInfo (&system_info);
void factor_vm::move_file(const vm_char *path1, const vm_char *path2)
{
- if(MoveFileEx((path1),(path2),MOVEFILE_REPLACE_EXISTING) == false)
+ if(MoveFileEx((path1),(path2),MOVEFILE_REPLACE_EXISTING) == false)
general_error(ERROR_IO,tag_fixnum(GetLastError()),false_object,NULL);
}