diff -up libical-0.48/src/libical/icaltimezone.c.deadlock libical-0.48/src/libical/icaltimezone.c --- libical-0.48/src/libical/icaltimezone.c.deadlock 2013-01-07 14:55:18.959214285 +0100 +++ libical-0.48/src/libical/icaltimezone.c 2013-01-07 14:55:21.245243978 +0100 @@ -1785,7 +1785,7 @@ icaltimezone_load_builtin_timezone (ical filename = (char*) malloc (filename_len); if (!filename) { icalerror_set_errno(ICAL_NEWFAILED_ERROR); - return; + goto out; } snprintf (filename, filename_len, "%s/%s.ics", get_zone_directory(), @@ -1795,7 +1795,7 @@ icaltimezone_load_builtin_timezone (ical free (filename); if (!fp) { icalerror_set_errno(ICAL_FILE_ERROR); - return; + goto out; } @@ -1819,7 +1819,7 @@ icaltimezone_load_builtin_timezone (ical if (!subcomp) { icalerror_set_errno(ICAL_PARSE_ERROR); - return; + goto out; } icaltimezone_get_vtimezone_properties (zone, subcomp); @@ -1829,8 +1829,8 @@ icaltimezone_load_builtin_timezone (ical icalcomponent_free(comp); } #endif -#ifdef HAVE_PTHREAD out: +#ifdef HAVE_PTHREAD pthread_mutex_unlock(&builtin_mutex); #endif }