I do somewhat disagree. An outright abort() is much easier to debug than a random possibly unchecked return value somewhere. However since if the code gets built without debugging enabled the asserts will go away i should add some regular checks too. I'd still like the code to abort if it's been compiled with debugging enabled though. 

Now what i would suggest is defining a new macro that's similar to assert but instead of getting completely removed if NDEBUG is defined would just return it's argument without any checks. So then you could do something like this:

````
if(assert_if(len >= sizeof(data)))
    return BLADERF_ERR_INVAL;
````

So the code would crash noisily if debugging is enabled but just return INVAL otherwise.

What do you think?