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