]> git.mxchange.org Git - simgear.git/blobdiff - simgear/nasal/vector.c
Alas. Fix #pragma magic for GCC <= 4.5.
[simgear.git] / simgear / nasal / vector.c
index efd5f4069cd317f3bdf5037d1455643da57e33eb..1a7546aeb2cbc4dfd9eae7fddfcf12c10b995e26 100644 (file)
@@ -16,7 +16,7 @@ static struct VecRec* newvecrec(struct VecRec* old)
 static void resize(struct naVec* v)
 {
     struct VecRec* vr = newvecrec(v->rec);
-    naGC_swapfree((void**)&(v->rec), vr);
+    naGC_swapfree((void*)&(v->rec), vr);
 }
 
 void naVec_gcclean(struct naVec* v)
@@ -69,16 +69,21 @@ int naVec_append(naRef vec, naRef o)
     return 0;
 }
 
-void naVec_setsize(naRef vec, int sz)
+void naVec_setsize(naContext c, naRef vec, int sz)
 {
-    int i;
-    struct VecRec* v = PTR(vec).vec->rec;
-    struct VecRec* nv = naAlloc(sizeof(struct VecRec) + sizeof(naRef) * sz);
-    nv->size = sz;
-    nv->alloced = sz;
-    for(i=0; i<sz; i++)
-        nv->array[i] = (v && i < v->size) ? v->array[i] : naNil();
-    naGC_swapfree((void**)&(PTR(vec).vec->rec), nv);
+    if (sz < 0)
+        naRuntimeError(c, "size cannot be negative");
+    else
+    {
+        int i;
+        struct VecRec* v = PTR(vec).vec->rec;
+        struct VecRec* nv = naAlloc(sizeof(struct VecRec) + sizeof(naRef) * sz);
+        nv->size = sz;
+        nv->alloced = sz;
+        for(i=0; i<sz; i++)
+            nv->array[i] = (v && i < v->size) ? v->array[i] : naNil();
+        naGC_swapfree((void*)&(PTR(vec).vec->rec), nv);
+    }
 }
 
 naRef naVec_removelast(naRef vec)