Browse Source

Various Windows compilation fixes.

Marco Bambini 6 years ago
parent
commit
8f54398769

+ 2 - 2
gravity_visualstudio/exports.def

@@ -29,8 +29,8 @@ EXPORTS
 	gravity_gray_object
 	gravity_gc_start
 	gravity_gc_setenabled
-	gravity_gc_push
-	gravity_gc_pop
+	gravity_gc_temppush
+	gravity_gc_temppop
 
 	gravity_vm_transfer
 	gravity_vm_cleanup

+ 11 - 3
gravity_visualstudio/unistd.h

@@ -1,3 +1,5 @@
+#ifdef _MSC_VER
+
 #pragma once
 #pragma comment(lib, "Shlwapi.lib")
 
@@ -5,7 +7,15 @@
 #include <io.h>
 #include <stdio.h>
 
+// Fix for Visual Studio
+
+#if (!defined(HAVE_BZERO) || !defined(bzero))
 #define bzero(b, len) memset((b), 0, (len))
+#endif
+
+#if (!defined(HAVE_SNPRINTF) || !defined(snprintf))
+#define snprintf    _snprintf
+#endif
 
 typedef SSIZE_T     ssize_t;
 typedef int         mode_t;
@@ -14,8 +24,6 @@ typedef int         mode_t;
 #define close       _close
 #define read        _read
 #define write       _write
-
-#define snprintf    _snprintf
 #define __func__    __FUNCTION__
 
-// Fix for Visual Studio
+#endif

+ 1 - 1
src/compiler/gravity_codegen.c

@@ -1852,7 +1852,7 @@ static void visit_list_expr (gvisitor_t *self, gnode_list_expr_t *node) {
         size_t k = (n - nprocessed > max_fields) ? max_fields : (n - nprocessed);
         size_t idxstart = nprocessed;
         size_t idxend = nprocessed + k;
-        nprocessed += k;
+        nprocessed += (uint32_t)k;
 
         // check if this chunk can be optimized
         // if (check_literals_list(self, node, ismap, idxstart, idxend, dest)) continue;

+ 1 - 1
src/shared/gravity_value.h

@@ -542,7 +542,7 @@ GRAVITY_API uint32_t            gravity_range_size (gravity_vm *vm, gravity_rang
 /// MARK: - STRING -
 GRAVITY_API gravity_value_t     gravity_string_to_value (gravity_vm *vm, const char *s, uint32_t len);
 GRAVITY_API gravity_string_t    *gravity_string_new (gravity_vm *vm, char *s, uint32_t len, uint32_t alloc);
-            inline void         gravity_string_set (gravity_string_t *obj, char *s, uint32_t len);
+GRAVITY_API void				gravity_string_set(gravity_string_t *obj, char *s, uint32_t len);
 GRAVITY_API void                gravity_string_free (gravity_vm *vm, gravity_string_t *value);
 GRAVITY_API void                gravity_string_blacken (gravity_vm *vm, gravity_string_t *string);
 GRAVITY_API uint32_t            gravity_string_size (gravity_vm *vm, gravity_string_t *string);

+ 1 - 0
src/utils/gravity_json.c

@@ -38,6 +38,7 @@
 #include <fcntl.h>
 #include <ctype.h>
 #include <assert.h>
+#include <unistd.h>
 
 #ifdef _MSC_VER
    #ifndef _CRT_SECURE_NO_WARNINGS