https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42032 --- Comment #32 from Lisette Scheer <lisette@bywatersolutions.com> --- Created attachment 198420 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=198420&action=edit Bug 42032: (follow-up) Eliminate phantom indicator diffs on authority MODIFY Authority MODIFY action log diffs were emitting bogus entries for every field with a default ' ' indicator on every save, producing output like: _marc.fields.1.040.ind1 ' ' ' ' _marc.fields.1.040.ind2 ' ' ' ' _marc.fields.2.150.ind1 ' ' ' ' _marc.fields.3.667.ind1 ' ' ' ' ... even when only a single subfield was edited. Root cause: Struct::Diff treats a utf8-flagged ' ' as different from a non-utf8 ' ' SV, even though Perl's eq returns true. ModAuthority was sourcing the two sides of the diff from different parse paths: - $oldrecord = GetAuthority($authid) -> MARC::Record->new_from_xml(...) -> indicators arrive utf8-flagged - $record (the "after" side) was the in-memory MARC built by the editor from CGI parameters -> indicators are bare byte strings The XML round-trip through AddAuthority normalises the stored copy, but the in-memory $record we passed to logaction had not been re-parsed, so every default indicator looked like a change to Struct::Diff. Fix: after AddAuthority commits the new state, re-read it via $new_authority->record and pass that to _authority_log_data. Both sides of the diff now traverse the same new_from_xml path, utf8 flags match, and Struct::Diff falls silent on unchanged indicators. This is the symmetric counterpart of how biblios already work in C4::Biblio: ModBiblio sources both $original_marc and $updated_marc_log through Koha::Biblio::Metadata::record_strip_nonxml (which also calls new_from_xml), so biblios don't hit this. The deeper asymmetry between in-memory editor MARC and stored MARC (default indicators only get normalised on the XML round-trip) is left for a separate bug; this patch keeps the action log diff clean without touching the storage path. Test plan: 1. prove t/db_dependent/AuthoritiesMarc.t 2. Enable AuthoritiesLog. Edit any authority via the staff UI making a single subfield change. Open Tools -> Log viewer for that authority and verify the diff column lists only the changed subfield (plus the 005 timestamp), with no rows for ind1/ind2 of untouched fields. 3. Re-run the same edit a second time changing nothing else; the diff should again be limited to 005 + the touched subfield. Signed-off-by: Lisette Scheer <lisette@bywatersolutions.com> -- You are receiving this mail because: You are watching all bug changes.