Print this page
5083 avoid undefined order of operations in assignments

@@ -1781,11 +1781,11 @@
         if (rb_head->state == SGHSC_RB_FULL)
                 return (DDI_FAILURE);
 
         rb_head->buf[rb_head->put_idx] = *event;
 
-        rb_head->put_idx = ++rb_head->put_idx & (rb_head->size - 1);
+        rb_head->put_idx = (rb_head->put_idx + 1) & (rb_head->size - 1);
 
         if (rb_head->put_idx == rb_head->get_idx)
                 rb_head->state = SGHSC_RB_FULL;
         else
                 rb_head->state = SGHSC_RB_FLOAT;

@@ -1804,11 +1804,11 @@
         if (rb_head->state == SGHSC_RB_EMPTY)
                 return (DDI_FAILURE);
 
         *event = rb_head->buf[rb_head->get_idx];
 
-        rb_head->get_idx = ++rb_head->get_idx & (rb_head->size - 1);
+        rb_head->get_idx = (rb_head->get_idx + 1) & (rb_head->size - 1);
 
         if (rb_head->get_idx == rb_head->put_idx)
                 rb_head->state = SGHSC_RB_EMPTY;
         else
                 rb_head->state = SGHSC_RB_FLOAT;