Avoid undef conversion from log10(INF) = INF to sal_Int32

Change-Id: Iffe85763097829cb04b766314077b5f2a9b5b8d5
Work around undef conversion of large double to float

...as flagged by -fsanitize=undefined.  But is it really undefined?
[conv.double] "If the source value is between two adjacent destination values,
the result of the conversion is an implementation-defined choice of either of
those values."  So if the double is between std::numeric_limits<float>::max()
and std::numeric_limits<float>::infinity()...

Change-Id: I6389c8ac4a922991e240638d231dd2a39e173882
Avoid undef use of null ptr, use offsetof instead

Change-Id: I095f45b537690fe98bf385d99194db6319d7ac93