diff --git a/src/kits/translation/TranslatorRoster.cpp b/src/kits/translation/TranslatorRoster.cpp index 567a38adc7..abee983f39 100644 --- a/src/kits/translation/TranslatorRoster.cpp +++ b/src/kits/translation/TranslatorRoster.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2002-2006, Haiku, Inc. All Rights Reserved. + * Copyright 2002-2007, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -659,6 +659,7 @@ BTranslatorRoster::Private::Identify(BPositionIO* source, _RescanChanged(); TranslatorMap::const_iterator iterator = fTranslators.begin(); + BMessage baseExtension(*ioExtension); float bestWeight = 0.0f; while (iterator != fTranslators.end()) { @@ -673,10 +674,12 @@ BTranslatorRoster::Private::Identify(BPositionIO* source, const translation_format* format = _CheckHints(formats, formatsCount, hintType, hintMIME); + BMessage extension(baseExtension); translator_info info; - if (translator.Identify(source, format, ioExtension, &info, wantType) == B_OK) { + if (translator.Identify(source, format, &extension, &info, wantType) == B_OK) { float weight = info.quality * info.capability; if (weight > bestWeight) { + *ioExtension = extension; bestWeight = weight; info.translator = iterator->first;