Index: src/OFTarArchiveEntry.m ================================================================== --- src/OFTarArchiveEntry.m +++ src/OFTarArchiveEntry.m @@ -83,24 +83,28 @@ if (_type == '\0') _type = OF_TAR_ARCHIVE_ENTRY_TYPE_FILE; if (memcmp(header + 257, "ustar\0" "00", 8) == 0) { - OFString *fileName; + OFString *prefix; _owner = [stringFromBuffer(header + 265, 32) copy]; _group = [stringFromBuffer(header + 297, 32) copy]; _deviceMajor = (uint32_t)octalValueFromBuffer( header + 329, 8, UINT32_MAX); _deviceMinor = (uint32_t)octalValueFromBuffer( header + 337, 8, UINT32_MAX); - fileName = [OFString stringWithFormat: @"%@/%@", - stringFromBuffer(header + 345, 155), _fileName]; - [_fileName release]; - _fileName = [fileName copy]; + prefix = stringFromBuffer(header + 345, 155); + if ([prefix length] > 0) { + OFString *fileName = [OFString + stringWithFormat: @"%@/%@", + prefix, _fileName]; + [_fileName release]; + _fileName = [fileName copy]; + } } objc_autoreleasePoolPop(pool); } @catch (id e) { [self release];