Hi, just to show that i began to review the Rock Ridge Deep Directory code, i wonder why the RR-related code snippet in lib/iso9660/iso9660_fs.c line 832 is not surrounded by #ifdef HAVE_ROCK and how a freshly calloc'ed p_stat shall have (p_stat->rr.u_su_fields & ISO_ROCK_SUF_RE) true.
Further i wonder whether the ISO_ROCK_SUF_RE bit can only be set if _iso9660_is_rock_ridge_enabled(p_image). Line 819: /* Reuse multiextent p_stat if not NULL */ if (!p_stat) { p_stat = calloc(1, stat_len); first_extent = true; >>> how could p_stat->rr.u_su_fields become non-zero ? } else { first_extent = false; } if (!p_stat) { cdio_warn("Couldn't calloc(1, %d)", stat_len); return NULL; } p_stat->type = (p_iso9660_dir->file_flags & ISO_DIRECTORY) ? _STAT_DIR : _STAT_FILE; >>> why no: #ifdef HAVE_ROCK ? Line 832: /* Ignore Rock Ridge Deep Directory RE entries */ >>> why no: if (_iso9660_is_rock_ridge_enabled(p_image)) ? if (p_stat->rr.u_su_fields & ISO_ROCK_SUF_RE) goto fail; >>> why no: #endif ? I will continue to read in a few hours. Have a nice day :) Thomas