const char *connstr;
struct event_base *base;
+
+ PGresult *last_result;
};
static void send_event(struct PgSocket *db, enum PgEvent ev)
static void result_cb(int sock, short flags, void *arg)
{
struct PgSocket *db = arg;
- PGresult *res, *res_saved = NULL;
+ PGresult *res;
db->wait_type = 0;
if (!res)
break;
- if (res_saved) {
- PQclear(res_saved);
- }
- res_saved = res;
+ if (db->last_result)
+ PQclear(db->last_result);
+ db->last_result = res;
}
- db->handler_func(db, db->handler_arg, PGS_RESULT_OK, res_saved);
+ res = db->last_result;
+ db->last_result = NULL;
+
+ db->handler_func(db, db->handler_arg, PGS_RESULT_OK, res);
+ PQclear(res);
}
static void send_cb(int sock, short flags, void *arg)
PQfinish(db->con);
db->con = NULL;
}
+ if (db->last_result) {
+ PQclear(db->last_result);
+ db->last_result = NULL;
+ }
}
void pgs_free(struct PgSocket *db)