@@ -321,18 +321,23 @@ { self = [super init]; @try { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; + union { + double d; + uint64_t u; + } d; if (![[element name] isEqual: [self className]] || ![[element namespace] isEqual: OF_SERIALIZATION_NS]) @throw [OFInvalidArgumentException exceptionWithClass: [self class] selector: _cmd]; - seconds = [element doubleValue]; + d.u = (uint64_t)[element hexadecimalValue]; + seconds = of_bswap_double_if_le(d.d); [pool release]; } @catch (id e) { [self release]; @throw e; @@ -408,14 +413,21 @@ - (OFXMLElement*)XMLElementBySerializing { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; OFXMLElement *element; + union { + double d; + uint64_t u; + } d; element = [OFXMLElement elementWithName: [self className] namespace: OF_SERIALIZATION_NS]; - [element setStringValue: [OFString stringWithFormat: @"%la", seconds]]; + + d.d = of_bswap_double_if_le(seconds); + [element setStringValue: + [OFString stringWithFormat: @"%016" PRIx64, d.u]]; [element retain]; [pool release]; [element autorelease];