You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hdf5/hdf5-1.8.3-snap12-signal.patch

66 lines
2.2 KiB

--- hdf5-1.8.3-snap12/src/H5detect.c.signal 2009-09-21 16:41:39.000000000 -0600
+++ hdf5-1.8.3-snap12/src/H5detect.c 2009-09-30 10:04:26.657899636 -0600
@@ -111,7 +111,7 @@
static void insert_libhdf5_settings(FILE *flibinfo);
static void make_libinfo(void);
static size_t align_g[] = {1, 2, 4, 8, 16};
-static jmp_buf jbuf_g;
+static sigjmp_buf jbuf_g;
/*-------------------------------------------------------------------------
@@ -370,7 +370,7 @@
void (*_handler2)(int) = signal(SIGSEGV, sigsegv_handler); \
\
_buf = (char*)malloc(sizeof(TYPE) + align_g[NELMTS(align_g) - 1]); \
- if(setjmp(jbuf_g)) _ano++; \
+ if(sigsetjmp(jbuf_g, 1)) _ano++; \
if(_ano < NELMTS(align_g)) { \
*((TYPE*)(_buf+align_g[_ano])) = _val; /*possible SIGBUS or SEGSEGV*/ \
_val2 = *((TYPE*)(_buf+align_g[_ano])); /*possible SIGBUS or SEGSEGV*/ \
@@ -387,7 +387,7 @@
memcpy(_buf+align_g[_ano]+(INFO.offset/8),((char *)&_val)+(INFO.offset/8),(size_t)(INFO.precision/8)); \
_val2 = *((TYPE*)(_buf+align_g[_ano])); \
if(_val!=_val2) \
- longjmp(jbuf_g, 1); \
+ siglongjmp(jbuf_g, 1); \
/* End Cray Check */ \
(INFO.align)=align_g[_ano]; \
} else { \
@@ -458,7 +458,7 @@
* it's not nearly as nice to work with, it does the job for
* this simple stuff.
*
- * Return: Returns via longjmp to jbuf_g.
+ * Return: Returns via siglongjmp to jbuf_g.
*
* Programmer: Robb Matzke
* Thursday, March 18, 1999
@@ -471,7 +471,7 @@
sigsegv_handler(int UNUSED signo)
{
signal(SIGSEGV, sigsegv_handler);
- longjmp(jbuf_g, 1);
+ siglongjmp(jbuf_g, 1);
}
@@ -483,7 +483,7 @@
* it's not nearly as nice to work with, it does the job for
* this simple stuff.
*
- * Return: Returns via longjmp to jbuf_g.
+ * Return: Returns via siglongjmp to jbuf_g.
*
* Programmer: Robb Matzke
* Thursday, March 18, 1999
@@ -496,7 +496,7 @@
sigbus_handler(int UNUSED signo)
{
signal(SIGBUS, sigbus_handler);
- longjmp(jbuf_g, 1);
+ siglongjmp(jbuf_g, 1);
#ifdef H5_HAVE_SIGLONGJMP
siglongjmp(jbuf_g, 1);
#endif /* H5_HAVE_SIGLONGJMP */