diff --git a/src/qset.c b/src/qset.c
index f902ea7a6cc7cf0c3f064471d9d83564f9008f6c..d79841c1f63b056cce406f65116544d3a88a6a3f 100644
--- a/src/qset.c
+++ b/src/qset.c
@@ -126,8 +126,7 @@ void qh_setaddsorted(setT **setp, void *newelem) {
     
 */
 void qh_setappend(setT **setp, void *newelem) {
-  int *sizep;
-  void **endp;
+  int *sizep, end_idx;
 
   if (!newelem)
     return;
@@ -135,8 +134,9 @@ void qh_setappend(setT **setp, void *newelem) {
     qh_setlarger(setp);
     sizep= SETsizeaddr_(*setp);
   }
-  *(endp= &((*setp)->e[(*sizep)++ - 1].p))= newelem;
-  *(++endp)= NULL;
+  end_idx = (*sizep)++ - 1;
+  (*setp)->e[end_idx].p = newelem;
+  (*setp)->e[end_idx + 1].p = NULL;
 } /* setappend */
 
 /*-<a                             href="qh-set.htm#TOC"