A C++ keze betette a lábát...

A C++ keze betette a lábát... Értem, hogy a hülyeségnek győznie kell az értelem felett, de hogy az AIX-on is ennyire előre tart ez a folyamat... egy localtime_r-ből indultunk, de hogy abból hogy lett C++ ?!

Szerk: Elnézést, ha nem volt világos: a programhibát nem localtime (vagy az abból hívott valamelyik komponens) okozza, csupán csak azt akartam mondani, hogy eddig boldog tudatlanságban éltem, nem tudtam erről a C++-os betüremkedésről...


#0  0x09000000000a5e2c in leftmost () from /usr/lib/libc.a(shr_64.o)
#1  0x09000000000a8608 in malloc_y () from /usr/lib/libc.a(shr_64.o)
#2  0x090000000001094c in malloc_common@AF102_86 () from /usr/lib/libc.a(shr_64.o)
#3  0x090000000402db7c in uprv_malloc@AF9_7 () from /usr/lib/libicuuc.a(shr_64.o)
#4  0x09000000040564a8 in ures_openDirect () from /usr/lib/libicuuc.a(shr_64.o)
#5  0x0900000003e05bd0 in icu::openOlsonResource(icu::UnicodeString const &, UResourceBundle &, UErrorCode &) ()
   from /usr/lib/libicui18n.a(shr_64.o)
#6  0x0900000003e0581c in icu::TimeZone::createSystemTimeZone( (icu::UnicodeString const &)) () from /usr/lib/libicui18n.a(shr_64.o)
#7  0x0900000003e056f8 in icu::TimeZone::createTimeZone( (icu::UnicodeString const &)) () from /usr/lib/libicui18n.a(shr_64.o)
#8  0x0900000003f4bd80 in _createTimeZone(unsigned short const *, int, UErrorCode *) () from /usr/lib/libicui18n.a(shr_64.o)
#9  0x0900000003f4c150 in ucal_open () from /usr/lib/libicui18n.a(shr_64.o)
#10 0x0900000000048fa0 in localtime_tz_ost_r () from /usr/lib/libc.a(shr_64.o)
#11 0x09000000000494a4 in localtime_tz_r () from /usr/lib/libc.a(shr_64.o)
#12 0x0900000000c3ef04 in FetchDate () from /home/projects/lib64/libdevel_core.so.1

Hozzászólások

Attol, hogy C runtime, ami a C nyelven irt programok fele nyujt szolgaltatast, nem kell kizarolag C-ben implementaltnak lennie, ez semmibol nem kovetekzik.
A libc csak egy interfacet ad a C nyelven irt programok fele, teljesen mindegy, hogy az miben van implementalva, akar Pascal is lehetne. Vagy 100% assembly. Hiszen a vegen ugyis gepi kod fut.

Kivéve, ha egy ilyen C-ből hívott C++ esetleg exception-t akar dobni... Vagy cin/cout-olni... Vagy bármit, ami a C++-runtime része, de a C-runtime-nak nem része. A hagyományos észjárás azt sugallná, hogy a bonyolultabb rendszer építsen az egyszerűbbre, ne az egyszerűbb a bonyolultabbra. (Esetünkben a C az egyszerűbb, a C++ a bonyolultabb.)