Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#13538 closed bug (invalid)

Pe missing symbol from reworked BCollator API

Reported by: moochris Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: Add-Ons Version: R1/Development
Keywords: BCollator Cc: pulkomandy
Blocked By: Blocking:
Has a Patch: no Platform: All

Description

In hrev51192, Pe complains about a symbol missing that I guess was private or deprectated:

~/haikuporter> lpe haikuporter
runtime_loader: /boot/system/apps/Pe/Pe: Could not resolve symbol 'Compare__C9BCollatorPCcT1Sc'
resolve symbol "Compare__C9BCollatorPCcT1Sc" returned: -2147478780
runtime_loader: /boot/system/apps/Pe/Pe: Troubles relocating: Symbol not found
### lpe Error
# Error launching Pe (Symbol not found)

Change History (5)

comment:1 by pulkomandy, 2 years ago

Yes, the BCollator API has changed. Pe needs to be rebuilt, but this is better solved on haikuports side (it should be enough to just rebuild Pe).

comment:2 by humdinger, 2 years ago

Trying to build Pe with haikuporter fails with:

/sources/Pe-fc6e5b696a09d937c5ee6edc3f9e3440909d53f1/Sources/CKeyCapturer.cpp: In function `static void CKeyCapturer::DescribeKeys(const KeyShortcut &, char *)':
/sources/Pe-fc6e5b696a09d937c5ee6edc3f9e3440909d53f1/Sources/CKeyCapturer.cpp:211: warning: case value out of range
/sources/Pe-fc6e5b696a09d937c5ee6edc3f9e3440909d53f1/Sources/CKeyCapturer.cpp:212: warning: case value out of range
C++ generated/objects-nodebug/Sources/CKeyMapper.o 
C++ generated/objects-nodebug/Sources/CLanguageInterface.o 
/sources/Pe-fc6e5b696a09d937c5ee6edc3f9e3440909d53f1/Sources/CLanguageInterface.cpp: In function `bool CompareInterfacesByName(const CLanguageInterface *, const CLanguageInterface *)':
/sources/Pe-fc6e5b696a09d937c5ee6edc3f9e3440909d53f1/Sources/CLanguageInterface.cpp:176: no matching function for call to `BCollator::Greater (const char *, const char *, collator_strengths)'
/boot/system/develop/headers/os/locale/Collator.h:89: candidates are: bool BCollator::Greater(const char *, const char *) const
/sources/Pe-fc6e5b696a09d937c5ee6edc3f9e3440909d53f1/Sources/CLanguageInterface.cpp:177: warning: control reaches end of non-void function `CompareInterfacesByName(const CLanguageInterface *, const CLanguageInterface *)'

comment:3 by pulkomandy, 2 years ago

Resolution: invalid
Status: newclosed

This needs to be fixed in PE sources. The strength is not set in the Greater function anymore, but using SetStrength on the collator.

This should be solved on Pe side (they shouldn't be using this API, it is not stable yet), so please report the bug there.

comment:4 by phoudoin, 2 years ago

I guess it means to drop using BCollator (it's to sort Languages in menu setup) in Pe until his API is stable enought?

Meanwhile, one solution could be to BColator::Greater() without specifing strength, which will build with latest BCollator API *and* older one, too. That means to forget why B_COLLATE_SECONDARY was used there (and what for), and accept that B_COLLATE_DEFAULT is enough.

comment:5 by pulkomandy, 2 years ago

I don't plan to change BCollator again in the near future, so it should be safe to start using the new API, and live with the occasional breakage if it ever changes again.

Note: See TracTickets for help on using tickets.