diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 9d8cb02ae..4a124e7e7 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -7,8 +7,9 @@ This file contains a high-level description of this package's evolution. Release ## 4.8.0 - TBD - * [Bug Fix] Fix incorrect time offsets from `ncdump -t`, in some cases when the time `units` attribute contains both a **non-zero** time-of-day, and a time zone suffix containing the letter "T", such as "UTC". See [Github #1866](https://github.com/Unidata/netcdf-c/pull/1866) for more information. +* [Bug Fix] Support aligned access for selected ARM processors. See [Github #1871](https://github.com/Unidata/netcdf-c/pull/1871) for more information. +* [Bug Fix] Fix time zone parser bug. See more information at [Github #1866](https://github.com/Unidata/netcdf-c/pull/1866) for more information. * [Documentation] Migrated the documents in the NUG/ directory to the dedicated NUG repository found at https://github.com/Unidata/netcdf * [Bug Fix] Revert the internal filter code to simplify it. From the user's point of view, the only visible change should be that (1) the functions that convert text to filter specs have had their signature reverted and renamed and have been moved to netcdf_aux.h, and (2) Some filter API functions now return NC_ENOFILTER when inquiry is made about some filter. Internally, the dispatch table has been modified to get rid of the complex structures. * [Bug Fix] If the HDF5 byte-range Virtual File Driver is available )HDf5 1.10.6 or later) then use it because it has better performance than the one currently built into the netcdf library. diff --git a/libdap4/d4util.c b/libdap4/d4util.c index 7d929f576..ed62a5ff4 100644 --- a/libdap4/d4util.c +++ b/libdap4/d4util.c @@ -459,3 +459,11 @@ NCD4_errorNC(int code, const int line, const char* file) { return NCD4_error(code,line,file,nc_strerror(code)); } + +d4size_t +NCD4_getcounter(void* p) +{ + COUNTERTYPE v; + memcpy(&v,p,sizeof(v)); + return (d4size_t)v; +} diff --git a/libdap4/ncd4.h b/libdap4/ncd4.h index 80b00ad16..25c96347b 100644 --- a/libdap4/ncd4.h +++ b/libdap4/ncd4.h @@ -197,7 +197,17 @@ extern int nc__dap4(void); #undef GETCOUNTER #undef SKIPCOUNTER + +/* Unclear which macros are defined for which compilers. + see: https://sourceforge.net/p/predef/wiki/Architectures/ +*/ +#if defined(__arm__) && __ARM_ARCH < 8 +EXTERNL d4size_t NCD4_getcounter(void* p); +#define GETCOUNTER(p) NCD4_getcounter(p) +#else #define GETCOUNTER(p) ((d4size_t)*((COUNTERTYPE*)(p))) +#endif /*defined(__arm__) && __ARM_ARCH < 8*/ + #define SKIPCOUNTER(p) {p=INCR(p,COUNTERSIZE);} #undef PUSH