char **itf = NULL;
OCRepPayloadGetStringArray(link, OC_RSRVD_INTERFACE, &itf, itfDim);
- if (SQLITE_DONE != sqlite3_step(stmt))
+ int sqlRet = sqlite3_step(stmt);
+ if (SQLITE_DONE != sqlRet)
{
sqlite3_finalize(stmt);
- return res;
}
- VERIFY_SQLITE(sqlite3_exec(gRDDB, "COMMIT", NULL, NULL, NULL));
+ else
+ {
+ VERIFY_SQLITE(sqlite3_exec(gRDDB, "COMMIT", NULL, NULL, NULL));
+
+ int64_t ins = sqlite3_last_insert_rowid(gRDDB);
+ VERIFY_SQLITE(storeResourceType(rt, rtDim[0], ins));
+ VERIFY_SQLITE(storeInterfaceType(itf, itfDim[0], ins));
+ }
- int64_t ins = sqlite3_last_insert_rowid(gRDDB);
- VERIFY_SQLITE(storeResourceType(rt, rtDim[0], ins));
- VERIFY_SQLITE(storeInterfaceType(itf, itfDim[0], ins));
OICFree(uri);
OCPayloadDestroy((OCPayload *)p);
for (j = 0; j < mtDim[0]; j++)
}
OICFree(itf);
+ if (SQLITE_DONE != sqlRet)
+ {
+ // Free links
+ size_t count = calcDimTotal(dimensions);
+ for (size_t k = 0; k < count; k++)
+ {
+ OCRepPayloadDestroy(links[k]);
+ }
+ OICFree(links);
+
+ return res;
+ }
}
VERIFY_SQLITE(sqlite3_finalize(stmt));
res = SQLITE_OK;
+
+ // Free links
+ size_t count = calcDimTotal(dimensions);
+ for (size_t k = 0; k < count; k++)
+ {
+ OCRepPayloadDestroy(links[k]);
+ }
+ OICFree(links);
}
return res;
}
if (SQLITE_DONE != sqlite3_step(stmt))
{
sqlite3_finalize(stmt);
+ OICFree(deviceid);
return OC_STACK_ERROR;
}
VERIFY_SQLITE(sqlite3_finalize(stmt));