#include <stdlib.h>
+#include <stdio.h>
#include "array.h"
static void copy_tab(int src_tab[], int dest_tab[], unsigned src_tab_size, unsigned index_offset) {
/* FIXME: I think it's worth doing some sanity checks on the array size:
* dest_tab_size >= src_tab_size */
+ if (src_tab == NULL || dest_tab == NULL) {
+ printf("please ensure you have created both arrays beforehand\n");
+ return;
+ }
for (unsigned i = 0; i < src_tab_size; i++) {
dest_tab[i + index_offset] = src_tab[i];
}
}
-int* concat_tab(int tab1[], unsigned tab_size1, int tab2[], unsigned tab_size2, int tab_dest[]) {
- int* rt = create_tab(tab_dest, tab_size1 + tab_size2);
+/* one must free the two source tabs in case they will be unused after to concatenation */
+int* concat_tab(int tab1[], unsigned tab_size1, int tab2[], unsigned tab_size2) {
+ int* tab_dest = NULL;
+ tab_dest = create_tab(tab_dest, tab_size1 + tab_size2);
copy_tab(tab1, tab_dest, tab_size1, 0);
copy_tab(tab2, tab_dest, tab_size2, tab_size1);
- return rt;
+ return tab_dest;
}
int* resize_tab(int tab[], unsigned new_tab_size) {