Просмотр исходного кода

qdevice: Add public prealloc function to dynar

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Jan Friesse 10 лет назад
Родитель
Сommit
2c05051a16
2 измененных файлов с 13 добавлено и 1 удалено
  1. 12 1
      qdevices/dynar.c
  2. 1 0
      qdevices/dynar.h

+ 12 - 1
qdevices/dynar.c

@@ -112,7 +112,7 @@ dynar_realloc(struct dynar *array, size_t new_array_size)
 }
 
 int
-dynar_cat(struct dynar *array, const void *src, size_t size)
+dynar_prealloc(struct dynar *array, size_t size)
 {
 	size_t new_size;
 
@@ -131,6 +131,17 @@ dynar_cat(struct dynar *array, const void *src, size_t size)
 		}
 	}
 
+	return (0);
+}
+
+int
+dynar_cat(struct dynar *array, const void *src, size_t size)
+{
+
+	if (dynar_prealloc(array, size) != 0) {
+		return (-1);
+	}
+
 	memmove(array->data + array->size, src, size);
 	array->size += size;
 

+ 1 - 0
qdevices/dynar.h

@@ -68,6 +68,7 @@ extern char	*dynar_data(const struct dynar *array);
 
 extern int	 dynar_cat(struct dynar *array, const void *src, size_t size);
 
+extern int	 dynar_prealloc(struct dynar *array, size_t size);
 
 #ifdef __cplusplus
 }