diff --git a/smartmontools/CHANGELOG b/smartmontools/CHANGELOG index 9237d9ee01af07d58ad316b7ce599a756a777e0b..64b69d8113fc6b61ee7b5a67028c5b2a5ed7bc0d 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 e7af9896096622b045c383ba4732401a7d974764..a439b3d23e5bef0fe6e106f65db0a8bef43e35b2 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)