if (retres)
        QR_set_conn(retres, self);
-   return (QResultHold) {retres, res};
+   rhold.first = retres;
+   rhold.last = res;
+   return rhold;
 }
 
 #define MAX_SEND_FUNC_ARGS 3
 
    {
        rv->hdbc = conn;
        rv->phstmt = NULL;
-       rv->rhold = (QResultHold) {0};
+       rv->rhold.first = rv->rhold.last = NULL;
        rv->curres = NULL;
        rv->catalog_result = FALSE;
        rv->prepare = NON_PREPARE_STATEMENT;
 void
 SC_init_Result(StatementClass *self)
 {
-   self->rhold = (QResultHold) {0};
+   self->rhold.first = self->rhold.last = NULL;
    self->curres = NULL;
    self->curr_param_result = 0;
    MYLOG(0, "leaving(%p)\n", self);
        for (res = first; res; res = QR_nextr(res))
            last = res;
        self->curres = first;
-       self->rhold = (QResultHold) {first, last};
+       self->rhold.first = first;
+       self->rhold.last = last;
        if (NULL != first)
            self->curr_param_result = 1;
    }
            }
            goto cleanup;
        }
-       rhold = (QResultHold) {first, first};
+       rhold.first = rhold.last = first;
    }
    else if (isSelectType)
    {