1.1 --- a/templates/ops.c Sun Nov 27 22:47:09 2016 +0100
1.2 +++ b/templates/ops.c Sun Nov 27 22:48:35 2016 +0100
1.3 @@ -5,6 +5,9 @@
1.4 #include "progconsts.h"
1.5 #include "progtypes.h"
1.6
1.7 +extern void __raise_type_error();
1.8 +extern void __raise_memory_error();
1.9 +
1.10 /* Direct access and manipulation of static objects. */
1.11
1.12 __attr __load_static(__ref parent, __ref obj)
1.13 @@ -272,11 +275,29 @@
1.14 return obj->pos;
1.15 }
1.16
1.17 +/* Memory allocation. */
1.18 +
1.19 +void *__ALLOCATE(size_t nmemb, size_t size)
1.20 +{
1.21 + void *ptr = calloc(nmemb, size);
1.22 + if (ptr == NULL)
1.23 + __raise_memory_error();
1.24 + return ptr;
1.25 +}
1.26 +
1.27 +void *__REALLOCATE(void *ptr, size_t size)
1.28 +{
1.29 + void *nptr = realloc(ptr, size);
1.30 + if (nptr == NULL)
1.31 + __raise_memory_error();
1.32 + return nptr;
1.33 +}
1.34 +
1.35 /* Copying of structures. */
1.36
1.37 __ref __COPY(__ref obj, int size)
1.38 {
1.39 - __ref copy = calloc(1, size);
1.40 + __ref copy = (__ref) __ALLOCATE(1, size);
1.41 memcpy(copy, obj, size);
1.42 return copy;
1.43 }