Problem: zsock_brecv documentation

There was an issue on Dec 2015 #1223

https://github.com/zeromq/czmq/issues/1223

and it has been fixed

actual documentation says

// Note that zsock_brecv creates the returned objects, and the caller must

// destroy them when finished with them.

OK that's clear if it is clear what an object is.

//      c       zchunk_t *              type = "chunk"
//      f       zframe_t *              type = "frame"
//      u       zuuid_t *               type = "uuid"
//      m       zmsg_t *                type = "msg"

could be easy identified as objects

but what's about

//      s       char *, 0-255 chars     type = "string"
//      S       char *, 0-2^32-1 chars  type = "longstr"

a longstr I have to free, a string not

if I try to destroy a string valgrind complains with

Invalid free() / delete / delete[] / realloc()

‘’’c

int res = 0;
char *data;
char *cmd;


    res = zsock_brecv(self->workerClient, "sS", &cmd, &data);
    if (res != 0) {
        fprintf(stderr, "error receive msg from worker server\n%s\n", 
zmq_strerror (errno));
    } else {
        do something with cmd and data
    }
    if (cmd != NULL) {
        free(cmd);
    }
    if (data != NULL) {
        free(data);
    }


‘’’

Am I the only one running into that trap?

Ju
_______________________________________________
zeromq-dev mailing list
[email protected]
https://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to