NullPointerException with some WAV tag conversion
Issue #270
resolved
Sometimes it happens that editing a WAV file results in a NPE. I could not get one of those affected files but I the line is this one: https://bitbucket.org/ijabz/jaudiotagger/src/a19a43998b5929b0b03e4cd26b1c03d2e1419753/src/org/jaudiotagger/audio/wav/WavTagWriter.java#lines-709
I suspect that a simple null-check is missing:
if (tag.getID3Tag() == null)
{
tag.setID3Tag(WavTag.createDefaultID3Tag());
}
Comments (4)
-
repo owner -
TagOptionSingleton.getInstance().setAndroid(true); TagOptionSingleton.getInstance().setID3V2Version(id3mode == Id3Mode.id3v24 ? ID3V2Version.ID3_V24 : ID3V2Version.ID3_V23); TagOptionSingleton.getInstance().setId3v1Save(false); TagOptionSingleton.getInstance().setId3v23DefaultTextEncoding(TextEncoding.UTF_16); TagOptionSingleton.getInstance().setId3v24DefaultTextEncoding(TextEncoding.UTF_8); TagOptionSingleton.getInstance().setId3v24UnicodeTextEncoding(TextEncoding.UTF_8); TagOptionSingleton.getInstance().setResetTextEncodingForExistingFrames(true); TagOptionSingleton.getInstance().setWriteMp3GenresAsText(true); TagOptionSingleton.getInstance().setWriteMp4GenresAsText(true); TagOptionSingleton.getInstance().setWriteChunkSize(1024 * 1024); TagOptionSingleton.getInstance().setCheckIsWritable(false); TagOptionSingleton.getInstance().setWavOptions(WavOptions.READ_ID3_UNLESS_ONLY_INFO_AND_SYNC); TagOptionSingleton.getInstance().setWavSaveOptions(WavSaveOptions.SAVE_ACTIVE); TagOptionSingleton.getInstance().setPreserveFileIdentity(true); AudioFile audio = AudioFileIO.read(new File(path)); if(<sometimes then branch, sometimes else>) Tag tag = audio.getTagOrCreateAndSetDefault(); else Tag tag = audio.getTagAndConvertOrCreateAndSetDefault(); // then I set some field values // OR sometimes I want to remove the whole tag audio.setTag(audio.createDefaultTag()); audio.getTag().deleteArtworkField(); audio.commit();
I am not performing any particular tag handling.
-
Seems that adding this fixed the problem:
if (tag.getID3Tag() == null) { tag.setID3Tag(WavTag.createDefaultID3Tag()); }
-
repo owner - changed status to resolved
Fixed.
- Log in to comment
Thats wierd because if there is no existing actual tag then it should create a pseudo tag, can I see your calling code ?