You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2018/09/04 10:51:11 UTC

celix git commit: CELIX-453: Fixes some issues in the array_list and properties update

Repository: celix
Updated Branches:
  refs/heads/develop 6e25c0da0 -> 57f169353


CELIX-453: Fixes some issues in the array_list and properties update


Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/57f16935
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/57f16935
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/57f16935

Branch: refs/heads/develop
Commit: 57f16935320e2a24043ee5d5bef06fa7c866228a
Parents: 6e25c0d
Author: Pepijn Noltes <pe...@gmail.com>
Authored: Tue Sep 4 12:50:48 2018 +0200
Committer: Pepijn Noltes <pe...@gmail.com>
Committed: Tue Sep 4 12:50:48 2018 +0200

----------------------------------------------------------------------
 libs/utils/private/test/array_list_test.cpp |  1 +
 libs/utils/private/test/properties_test.cpp | 28 ++++++++
 libs/utils/src/array_list.c                 | 92 +++++++++++++++++++-----
 libs/utils/src/properties.c                 | 11 +--
 4 files changed, 111 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/celix/blob/57f16935/libs/utils/private/test/array_list_test.cpp
----------------------------------------------------------------------
diff --git a/libs/utils/private/test/array_list_test.cpp b/libs/utils/private/test/array_list_test.cpp
index df8c135..4c908e3 100644
--- a/libs/utils/private/test/array_list_test.cpp
+++ b/libs/utils/private/test/array_list_test.cpp
@@ -26,6 +26,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <iostream>
 
 #include "CppUTest/TestHarness.h"
 #include "CppUTest/TestHarness_c.h"

http://git-wip-us.apache.org/repos/asf/celix/blob/57f16935/libs/utils/private/test/properties_test.cpp
----------------------------------------------------------------------
diff --git a/libs/utils/private/test/properties_test.cpp b/libs/utils/private/test/properties_test.cpp
index 6dfb3ba..6e295aa 100644
--- a/libs/utils/private/test/properties_test.cpp
+++ b/libs/utils/private/test/properties_test.cpp
@@ -33,6 +33,7 @@
 
 extern "C" {
 #include "properties.h"
+#include "celix_properties.h"
 }
 
 int main(int argc, char** argv) {
@@ -78,6 +79,33 @@ TEST(properties, load) {
 	properties_destroy(properties);
 }
 
+TEST(properties, asLong) {
+	celix_properties_t *props = celix_properties_create();
+	celix_properties_set(props, "t1", "42");
+	celix_properties_set(props, "t2", "-42");
+	celix_properties_set(props, "t3", "");
+	celix_properties_set(props, "t4", "42 bla"); //converts to 42
+	celix_properties_set(props, "t5", "bla");
+
+	long v = celix_properties_getAsLong(props, "t1", -1);
+	LONGS_EQUAL(42, v);
+
+	v = celix_properties_getAsLong(props, "t2", -1);
+	LONGS_EQUAL(-42, v);
+
+	v = celix_properties_getAsLong(props, "t3", -1);
+	LONGS_EQUAL(-1, v);
+
+	v = celix_properties_getAsLong(props, "t4", -1);
+	LONGS_EQUAL(42, v);
+
+	v = celix_properties_getAsLong(props, "t5", -1);
+	LONGS_EQUAL(-1, v);
+
+	v = celix_properties_getAsLong(props, "non-existing", -1);
+	LONGS_EQUAL(-1, v);
+}
+
 TEST(properties, store) {
 	char propertiesFile[] = "resources-test/properties_out.txt";
 	properties = properties_create();

http://git-wip-us.apache.org/repos/asf/celix/blob/57f16935/libs/utils/src/array_list.c
----------------------------------------------------------------------
diff --git a/libs/utils/src/array_list.c b/libs/utils/src/array_list.c
index 4ad277c..15143a5 100644
--- a/libs/utils/src/array_list.c
+++ b/libs/utils/src/array_list.c
@@ -420,14 +420,54 @@ void celix_arrayList_add(celix_array_list_t *list, void * element) {
 	arrayList_addEntry(list, entry);
 }
 
-void celix_arrayList_addInt(celix_array_list_t *list, int val) { celix_array_list_entry_t entry = { .intVal = val }; arrayList_addEntry(list, entry);}
-void celix_arrayList_addLong(celix_array_list_t *list, long val)  { celix_array_list_entry_t entry = { .longVal = val }; arrayList_addEntry(list, entry);}
-void celix_arrayList_addUInt(celix_array_list_t *list, unsigned int val)  { celix_array_list_entry_t entry = { .uintVal = val }; arrayList_addEntry(list, entry);}
-void celix_arrayList_addULong(celix_array_list_t *list, unsigned long val)  { celix_array_list_entry_t entry = { .ulongVal = val }; arrayList_addEntry(list, entry);}
-void celix_arrayList_addFloat(celix_array_list_t *list, float val)  { celix_array_list_entry_t entry = { .floatVal = val }; arrayList_addEntry(list, entry);}
-void celix_arrayList_addDouble(celix_array_list_t *list, double val)  { celix_array_list_entry_t entry = { .doubleVal = val }; arrayList_addEntry(list, entry);}
-void celix_arrayList_addBool(celix_array_list_t *list, bool val)  { celix_array_list_entry_t entry = { .boolVal = val }; arrayList_addEntry(list, entry);}
-void celix_arrayList_addSize(celix_array_list_t *list, size_t val)  { celix_array_list_entry_t entry = { .sizeVal = val }; arrayList_addEntry(list, entry);}
+void celix_arrayList_addInt(celix_array_list_t *list, int val) { 
+	celix_array_list_entry_t entry; 
+	memset(&entry, 0, sizeof(entry)); 
+	entry.intVal = val; 
+	arrayList_addEntry(list, entry);
+}
+void celix_arrayList_addLong(celix_array_list_t *list, long val) { 
+	celix_array_list_entry_t entry; 
+	memset(&entry, 0, sizeof(entry)); 
+	entry.longVal = val; 
+	arrayList_addEntry(list, entry);
+}
+void celix_arrayList_addUInt(celix_array_list_t *list, unsigned int val) { 
+	celix_array_list_entry_t entry; 
+	memset(&entry, 0, sizeof(entry)); 
+	entry.uintVal = val; 
+	arrayList_addEntry(list, entry);
+}
+void celix_arrayList_addULong(celix_array_list_t *list, unsigned long val) { 
+	celix_array_list_entry_t entry; 
+	memset(&entry, 0, sizeof(entry)); 
+	entry.ulongVal = val; 
+	arrayList_addEntry(list, entry);
+}
+void celix_arrayList_addDouble(celix_array_list_t *list, double val) { 
+	celix_array_list_entry_t entry; 
+	memset(&entry, 0, sizeof(entry)); 
+	entry.doubleVal = val; 
+	arrayList_addEntry(list, entry);
+}
+void celix_arrayList_addFloat(celix_array_list_t *list, float val) { 
+	celix_array_list_entry_t entry; 
+	memset(&entry, 0, sizeof(entry)); 
+	entry.floatVal = val; 
+	arrayList_addEntry(list, entry);
+}
+void celix_arrayList_addBool(celix_array_list_t *list, bool val) { 
+	celix_array_list_entry_t entry; 
+	memset(&entry, 0, sizeof(entry)); 
+	entry.boolVal = val; 
+	arrayList_addEntry(list, entry);
+}
+void celix_arrayList_addSize(celix_array_list_t *list, size_t val) { 
+	celix_array_list_entry_t entry; 
+	memset(&entry, 0, sizeof(entry)); 
+	entry.sizeVal = val; 
+	arrayList_addEntry(list, entry);
+}
 
 int celix_arrayList_indexOf(celix_array_list_t *list, celix_array_list_entry_t entry) {
 	size_t size = celix_arrayList_size(list);
@@ -458,46 +498,64 @@ void celix_arrayList_removeEntry(celix_array_list_t *list, celix_array_list_entr
 
 
 void celix_arrayList_remove(celix_array_list_t *list, void *ptr) {
-	celix_array_list_entry_t entry = {.voidPtrVal = ptr};
+	celix_array_list_entry_t entry;
+        memset(&entry, 0, sizeof(entry));
+	entry.voidPtrVal = ptr;
 	celix_arrayList_removeEntry(list, entry);
 }
 
 void celix_arrayList_removeInt(celix_array_list_t *list, int val) {
-	celix_array_list_entry_t entry = {.intVal = val};
+	celix_array_list_entry_t entry;
+        memset(&entry, 0, sizeof(entry));
+	entry.intVal = val;
 	celix_arrayList_removeEntry(list, entry);
 }
 
 void celix_arrayList_removeLong(celix_array_list_t *list, long val) {
-	celix_array_list_entry_t entry = {.longVal = val};
+	celix_array_list_entry_t entry;
+        memset(&entry, 0, sizeof(entry));
+	entry.longVal = val;
 	celix_arrayList_removeEntry(list, entry);
 }
 
 void celix_arrayList_removeUInt(celix_array_list_t *list, unsigned int val) {
-	celix_array_list_entry_t entry = {.uintVal = val};
+	celix_array_list_entry_t entry;
+        memset(&entry, 0, sizeof(entry));
+	entry.uintVal = val;
 	celix_arrayList_removeEntry(list, entry);
 }
 
 void celix_arrayList_removeULong(celix_array_list_t *list, unsigned long val) {
-	celix_array_list_entry_t entry = {.ulongVal = val};
+	celix_array_list_entry_t entry;
+        memset(&entry, 0, sizeof(entry));
+	entry.ulongVal = val;
 	celix_arrayList_removeEntry(list, entry);
 }
 
 void celix_arrayList_removeFloat(celix_array_list_t *list, float val) {
-	celix_array_list_entry_t entry = {.floatVal = val};
+	celix_array_list_entry_t entry;
+        memset(&entry, 0, sizeof(entry));
+	entry.floatVal = val;
 	celix_arrayList_removeEntry(list, entry);
 }
 
 void celix_arrayList_removeDouble(celix_array_list_t *list, double val) {
-	celix_array_list_entry_t entry = {.doubleVal = val};
+	celix_array_list_entry_t entry;
+        memset(&entry, 0, sizeof(entry));
+	entry.doubleVal = val;
 	celix_arrayList_removeEntry(list, entry);
 }
 
 void celix_arrayList_removeBool(celix_array_list_t *list, bool val) {
-	celix_array_list_entry_t entry = {.boolVal = val};
+	celix_array_list_entry_t entry;
+        memset(&entry, 0, sizeof(entry));
+	entry.boolVal = val;
 	celix_arrayList_removeEntry(list, entry);
 }
 
 void celix_arrayList_removeSize(celix_array_list_t *list, size_t val) {
-	celix_array_list_entry_t entry = {.sizeVal = val};
+	celix_array_list_entry_t entry;
+        memset(&entry, 0, sizeof(entry));
+	entry.sizeVal = val;
 	celix_arrayList_removeEntry(list, entry);
 }

http://git-wip-us.apache.org/repos/asf/celix/blob/57f16935/libs/utils/src/properties.c
----------------------------------------------------------------------
diff --git a/libs/utils/src/properties.c b/libs/utils/src/properties.c
index 0160adb..2b3daab 100644
--- a/libs/utils/src/properties.c
+++ b/libs/utils/src/properties.c
@@ -31,6 +31,8 @@
 #include "properties.h"
 #include "celix_properties.h"
 #include "utils.h"
+#include <errno.h>
+
 
 #define MALLOC_BLOCK_SIZE		5
 
@@ -381,11 +383,12 @@ long celix_properties_getAsLong(const celix_properties_t *props, const char *key
 	long result = defaultValue;
 	const char *val = celix_properties_get(props, key, NULL);
 	if (val != NULL) {
-		long r = strtol(val, NULL, 10);
-		if (errno == 0) {
-			result = r;
-		}
+		char *enptr = NULL;
 		errno = 0;
+		long r = strtol(val, &enptr, 10);
+		if (enptr != val && errno == 0) {
+		    result = r;
+		}
 	}
 	return result;
 }