From a70e7720e8b718db7d393660ff80388d6d05c16e Mon Sep 17 00:00:00 2001 From: samm2 <samm2@4ea69e1a-61f1-4043-bf83-b5c94c648137> Date: Sun, 20 Dec 2009 23:26:23 +0000 Subject: [PATCH] FreeBSD: fixing bug #29 git-svn-id: https://smartmontools.svn.sourceforge.net/svnroot/smartmontools/trunk@3007 4ea69e1a-61f1-4043-bf83-b5c94c648137 --- smartmontools/CHANGELOG | 2 ++ smartmontools/os_freebsd.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/smartmontools/CHANGELOG b/smartmontools/CHANGELOG index 9237d9ee0..64b69d811 100644 --- a/smartmontools/CHANGELOG +++ b/smartmontools/CHANGELOG @@ -43,6 +43,8 @@ NOTES FOR FUTURE RELEASES: see TODO file. <DEVELOPERS: ADDITIONS TO THE CHANGE LOG GO JUST BELOW HERE, PLEASE> + [AS] FreeBSD: fixing crash on kFreeBSD (#29), patch provided by Petr Salinger + [CF] Makefile.am: 'make check' now tests the syntax of drivedb.h. [CF] Cygwin: Open drive database files in text mode. diff --git a/smartmontools/os_freebsd.cpp b/smartmontools/os_freebsd.cpp index e7af98960..a439b3d23 100644 --- a/smartmontools/os_freebsd.cpp +++ b/smartmontools/os_freebsd.cpp @@ -165,7 +165,7 @@ private: #ifdef __GLIBC__ static inline void * reallocf(void *ptr, size_t size) { void *rv = realloc(ptr, size); - if(rv == NULL) + if((rv == NULL) && (size != 0)) free(ptr); return rv; } @@ -1800,10 +1800,10 @@ smart_device * freebsd_smart_interface::autodetect_smart_device(const char * nam cam_close_device(cam_dev); if(usbdevlist(bus,vendor_id, product_id, version)){ const char * usbtype = get_usb_dev_type_by_id(vendor_id, product_id, version); - if (!usbtype) - return false; - return get_sat_device(usbtype, new freebsd_scsi_device(this, name, "")); + if (usbtype) + return get_sat_device(usbtype, new freebsd_scsi_device(this, name, "")); } + return false; } #if FREEBSDVER > 800100 // check if we have ATA device connected to CAM (ada) -- GitLab