Taglib: Desempenho e problemas de travamento

Eu estou usando a biblioteca taglib (1.7.2) no meu aplicativo Qt, para ler algumas metadatas de arquivos mp3 de uma pasta de música. O problema é que acho muito lento.

Por exemplo, este é o código:

QString path = "C:/Music/";
QDir d(path);
QStringList fileTypes;
fileTypes << "*.mp3" ;
d.setNameFilters(fileTypes);
QStringList pathList = d.entryList( QDir::NoDotAndDotDot | QDir::Files);

QTime t;
t.start();
foreach (QString fileName, pathList) {
    fileName = path + fileName;
    TagLib::FileRef *f = new TagLib::FileRef(fileName.toStdWString().c_str());
}
qDebug()<<t.elapsed();

Este código leva cerca de 11s para carregar uma pasta contendo 400 músicas, ou seja, cerca de 28ms para cada arquivo. Esta é a linha muito lenta:

TagLib::FileRef *f = new TagLib::FileRef(pathFile.toStdWString().c_str());

É normal, é tão longo? Eu tentei usar multi-threading, mas isso não muda nada, e não vem do meu PC, já que é poderoso o suficiente. O estranho é que uma vez que todos os arquivos foram carregados, na próxima vez que carregar a pasta novamente, é feito instantaneamente (até eu reiniciar o sistema operacional).

Eu também tenho outro problema.

Às vezes, quando uma tag não é definida, o aplicativo trava e produz:

HEAP[myapp.exe]: 
Invalid address specified to RtlFreeHeap( 0ED90000, 0ED92CC0 )

Na linha a seguir, por exemplo:

if (!f->tag()->genre().isNull())

Estou usando o Windows 7.

Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion