c
// Assuming a macro like this exists for handling resource cleanup
#define CLEANUP_AND_RETURN(ret_val) do { vfree(data); return (ret_val); } while (0)

// ...

51  if (ret)
52      CLEANUP_AND_RETURN(ret); // Use the macro for cleanup and return

// ...

84 out:
85  vfree(data);
86  return ret;
