[1/2] perl: Fix lookup if given address is invalid or not in DB.

Message ID 20191002170753.6738-1-stefan.schantl@ipfire.org
State Accepted
Commit 6aa97cacb626c43f6855b727557dbf029cbcb771
Headers
Series [1/2] perl: Fix lookup if given address is invalid or not in DB. |

Commit Message

Stefan Schantl Oct. 2, 2019, 5:07 p.m. UTC
  In this case now undef will be returned.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
---
 src/perl/Location.xs | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)
  

Patch

diff --git a/src/perl/Location.xs b/src/perl/Location.xs
index ab27f0b..cdbc7e7 100644
--- a/src/perl/Location.xs
+++ b/src/perl/Location.xs
@@ -92,27 +92,23 @@  get_license(db)
 #
 # Lookup functions
 #
-char*
+SV*
 lookup_country_code(db, address)
 	struct loc_database* db;
 	char* address;
 
 	CODE:
+		RETVAL = &PL_sv_undef;
+
 		// Lookup network
 		struct loc_network *network;
 		int err = loc_database_lookup_from_string(db, address, &network);
-		if (err) {
-			croak("Could not look up for %s\n", address);
-		}
-
-		// Extract the country code
-		const char* country_code = loc_network_get_country_code(network);
-		loc_network_unref(network);
+		if (!err) {
+			// Extract the country code
+			const char* country_code = loc_network_get_country_code(network);
+			RETVAL = newSVpv(country_code, strlen(country_code));
 
-		if (country_code) {
-			RETVAL = strdup(country_code);
-		} else {
-			RETVAL = NULL;
+			loc_network_unref(network);
 		}
 	OUTPUT:
 		RETVAL