страшные глюки BSTR/CComBSTR (VC++6)

Здравствуйте,
при написании COM-объектов обычно используются UNICODE-строки, для
которых есть тип BSTR и класс-оболочка CComBSTR. Я пишу функцию,
что-то типа
func(BSTR bsArg1) {
CComBSTR bsLoc1;
CComBSTR bsLoc2;
CComBSTR bsLoc3;
// ...
bsLoc1 = bsArg1;
bsLoc2 = CComBSTR("text1");
bsLoc2 = CComBSTR("text2");
// ...
}
функция как надо не работает. Смотрю в отладчике и вижу... в строчке
bsLoc1 = bsArg1 в локальную переменную записывается СОВСЕМ НЕ ТО ЧТО
БЫЛО ПЕРЕДАНО КАК АРГУМЕНТ! А записывается туда или одна из строк
text1, text2, или "text1text2". Это что? Глюки реализации или
компилятора? И как с этим бороться?
Привет!
А в курсе, что SP6 вышел?