bindings/perl: Fix error handling in Perl:ping() and XS:_ping_iterator_get_hostname().
[liboping.git] / bindings / perl / Oping.xs
index 6376775..d97d4f8 100644 (file)
@@ -120,9 +120,10 @@ _ping_iterator_get_hostname (iter)
                                (void *) buffer, &buffer_size);
                if (status != ENOMEM)
                        break;
-
-               /* FIXME: This is a workaround for a bug in 0.3.5. */
+#if !defined(OPING_VERSION) || (OPING_VERSION <= 3005)
+               /* This is a workaround for a bug in 0.3.5. */
                buffer_size++;
+#endif
 
                buffer = (char *) malloc (buffer_size);
                if (buffer == NULL)
@@ -131,7 +132,10 @@ _ping_iterator_get_hostname (iter)
                status = ping_iterator_get_info (iter, PING_INFO_HOSTNAME,
                                (void *) buffer, &buffer_size);
                if (status != 0)
+               {
+                       free (buffer);
                        break;
+               }
 
                XPUSHs (sv_2mortal (newSVpvn(buffer,buffer_size)));
                free(buffer);