From: Uwe Hermann Date: Sun, 21 Oct 2012 20:40:43 +0000 (+0200) Subject: sr_init/sr_exit: Improve docs, add error checks. X-Git-Tag: dsupstream~651 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=c46762a285d7c844a771f5c1f0ad2447a00906b3;p=libsigrok.git sr_init/sr_exit: Improve docs, add error checks. --- diff --git a/backend.c b/backend.c index dd38f66e..eba03aaf 100644 --- a/backend.c +++ b/backend.c @@ -25,13 +25,27 @@ /** * Initialize libsigrok. * - * @return SR_OK upon success, a (negative) error code otherwise. + * This function must be called before any other libsigrok function. + * + * @param ctx Pointer to a libsigrok context struct pointer. Must not be NULL. + * This will be a pointer to a newly allocated libsigrok context + * object upon success, and is undefined upon errors. + * + * @return SR_OK upon success, a (negative) error code otherwise. Upon errors + * the 'ctx' pointer is undefined and should not be used. Upon success, + * the context will be free'd by sr_exit() as part of the libsigrok + * shutdown. */ SR_API int sr_init(struct sr_context **ctx) { int ret = SR_ERR; struct sr_context *context; + if (!ctx) { + sr_err("%s(): libsigrok context was NULL.", __func__); + return SR_ERR; + } + /* + 1 to handle when struct sr_context has no members. */ context = g_try_malloc0(sizeof(struct sr_context) + 1); @@ -42,8 +56,8 @@ SR_API int sr_init(struct sr_context **ctx) #ifdef HAVE_LIBUSB_1_0 ret = libusb_init(&context->libusb_ctx); - if (LIBUSB_SUCCESS != ret) { - sr_err("libusb_init() returned %s\n", libusb_error_name(ret)); + if (LIBUSB_SUCCESS == ret) { + sr_err("libusb_init() returned %s.\n", libusb_error_name(ret)); goto done; } #endif @@ -58,10 +72,17 @@ done: /** * Shutdown libsigrok. * + * @param ctx Pointer to a libsigrok context struct. Must not be NULL. + * * @return SR_OK upon success, a (negative) error code otherwise. */ SR_API int sr_exit(struct sr_context *ctx) { + if (!ctx) { + sr_err("%s(): libsigrok context was NULL.", __func__); + return SR_ERR; + } + sr_hw_cleanup_all(); #ifdef HAVE_LIBUSB_1_0