| 1400 | |
| 1401 | #ifndef _KERNEL |
| 1402 | static void |
| 1403 | DeserializeFloatOverPointer(char *pBuffer, size_t zBUfferLength, struct CTypeDescriptor *pType, unsigned long *pNumber) |
| 1404 | { |
| 1405 | double D; |
| 1406 | #ifdef __HAVE_LONG_DOUBLE |
| 1407 | long double LD; |
| 1408 | #endif |
| 1409 | |
| 1410 | ASSERT(pBuffer); |
| 1411 | ASSERT(zBUfferLength > 0); |
| 1412 | ASSERT(pType); |
| 1413 | ASSERT(pNumber); |
| 1414 | /* |
| 1415 | * This function handles 64-bit number over a pointer on 32-bit CPUs. |
| 1416 | */ |
| 1417 | ASSERT((sizeof(*pNumber) * CHAR_BIT < WIDTH_64) || (zDeserializeTypeWidth(pType) >= WIDTH_64)); |
| 1418 | ASSERT(sizeof(D) == sizeof(uint64_t)); |
| 1419 | #ifdef __HAVE_LONG_DOUBLE |
| 1420 | ASSERT(sizeof(LD) > sizeof(uint64_t)); |
| 1421 | #endif |
| 1422 | |
| 1423 | switch (zDeserializeTypeWidth(pType)) { |
| 1424 | #ifdef __HAVE_LONG_DOUBLE |
| 1425 | case WIDTH_128: |
| 1426 | case WIDTH_96: |
| 1427 | case WIDTH_80: |
| 1428 | memcpy(&LD, pNumber, sizeof(long double)); |
| 1429 | snprintf(pBuffer, zBUfferLength, "%Lg", LD); |
| 1430 | break; |
| 1431 | #endif |
| 1432 | case WIDTH_64: |
| 1433 | memcpy(&D, pNumber, sizeof(double)); |
| 1434 | snprintf(pBuffer, zBUfferLength, "%g", D); |
| 1435 | break; |
| 1436 | } |
| 1437 | } |
| 1438 | |
| 1439 | static void |
| 1440 | DeserializeFloatInlined(char *pBuffer, size_t zBUfferLength, struct CTypeDescriptor *pType, unsigned long ulNumber) |
no test coverage detected