)]}'
{"include/erasurecode/erasurecode.h":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7d644b921b15f20e4e2f77701e0f31e46085e314","unresolved":true,"context_lines":[{"line_number":98,"context_line":"/* \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d liberasurecode frontend API functions \u003d~\u003d*\u003d~\u003d\u003d~\u003d~\u003d*\u003d~\u003d\u003d~\u003d */"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"/* Opaque session type; full definition is in erasurecode_backend.h */"},{"line_number":101,"context_line":"typedef struct ec_session *ec_session_t;"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"/* liberasurecode frontend API functions */"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3fadca36_a8e6a020","line":101,"updated":"2026-04-06 04:42:19.000000000","message":"Might should make this more opaque -- just return `void*`.","commit_id":"e483c1cd3aca4c47ffa95ab1cde4ce5a33e6bf1b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5d16e2d6021c6b6724e8018983555e53c719bbdc","unresolved":false,"context_lines":[{"line_number":98,"context_line":"/* \u003d~\u003d*\u003d~\u003d\u003d~\u003d*\u003d~\u003d\u003d liberasurecode frontend API functions \u003d~\u003d*\u003d~\u003d\u003d~\u003d~\u003d*\u003d~\u003d\u003d~\u003d */"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"/* Opaque session type; full definition is in erasurecode_backend.h */"},{"line_number":101,"context_line":"typedef struct ec_session *ec_session_t;"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"/* liberasurecode frontend API functions */"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"8bb33219_94bc3f7f","line":101,"in_reply_to":"3fadca36_a8e6a020","updated":"2026-04-08 01:27:38.000000000","message":"Nah, this seems to be fairly common: https://interrupt.memfault.com/blog/opaque-pointers","commit_id":"e483c1cd3aca4c47ffa95ab1cde4ce5a33e6bf1b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7d644b921b15f20e4e2f77701e0f31e46085e314","unresolved":true,"context_lines":[{"line_number":424,"context_line":" *"},{"line_number":425,"context_line":" * @param desc - liberasurecode descriptor from liberasurecode_instance_create()"},{"line_number":426,"context_line":" *"},{"line_number":427,"context_line":" * @return pointer to a new session, or NULL on error"},{"line_number":428,"context_line":" */"},{"line_number":429,"context_line":"int liberasurecode_session_open(int desc, ec_session_t *session);"},{"line_number":430,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"e85ec30e_2dc23b03","line":427,"updated":"2026-04-06 04:42:19.000000000","message":"`@return` needs an update -- we return an error code now, session pointer became an output param.","commit_id":"cb8be3373d963879d19f21d2ba8446edb3d29192"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5d16e2d6021c6b6724e8018983555e53c719bbdc","unresolved":false,"context_lines":[{"line_number":424,"context_line":" *"},{"line_number":425,"context_line":" * @param desc - liberasurecode descriptor from liberasurecode_instance_create()"},{"line_number":426,"context_line":" *"},{"line_number":427,"context_line":" * @return pointer to a new session, or NULL on error"},{"line_number":428,"context_line":" */"},{"line_number":429,"context_line":"int liberasurecode_session_open(int desc, ec_session_t *session);"},{"line_number":430,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"f0adde30_c0448ad6","line":427,"in_reply_to":"e85ec30e_2dc23b03","updated":"2026-04-08 01:27:38.000000000","message":"Done","commit_id":"cb8be3373d963879d19f21d2ba8446edb3d29192"}],"include/erasurecode/erasurecode_backend.h":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7d644b921b15f20e4e2f77701e0f31e46085e314","unresolved":true,"context_lines":[{"line_number":139,"context_line":"    struct ec_backend_args      args;               /* EC backend instance data (private) */"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    int                         idesc;              /* liberasurecode instance handle */"},{"line_number":142,"context_line":"    int                         open_sessions;      /* number of open sessions */"},{"line_number":143,"context_line":"    struct ec_backend_desc      desc;               /* EC backend instance handle */"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    SLIST_ENTRY(ec_backend)     link;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"50ecefce_14aaf605","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":7},"updated":"2026-04-06 04:42:19.000000000","message":"`unsigned int`? It can\u0027t go negative, right?","commit_id":"cb8be3373d963879d19f21d2ba8446edb3d29192"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5d16e2d6021c6b6724e8018983555e53c719bbdc","unresolved":false,"context_lines":[{"line_number":139,"context_line":"    struct ec_backend_args      args;               /* EC backend instance data (private) */"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    int                         idesc;              /* liberasurecode instance handle */"},{"line_number":142,"context_line":"    int                         open_sessions;      /* number of open sessions */"},{"line_number":143,"context_line":"    struct ec_backend_desc      desc;               /* EC backend instance handle */"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    SLIST_ENTRY(ec_backend)     link;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"21715ef7_f273d4ee","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":7},"in_reply_to":"50ecefce_14aaf605","updated":"2026-04-08 01:27:38.000000000","message":"Done","commit_id":"cb8be3373d963879d19f21d2ba8446edb3d29192"}],"src/erasurecode.c":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7d644b921b15f20e4e2f77701e0f31e46085e314","unresolved":true,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"int liberasurecode_session_open(int desc, ec_session_t *session)"},{"line_number":327,"context_line":"{"},{"line_number":328,"context_line":"    *session \u003d NULL;"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    int rc \u003d rwlock_wrlock(\u0026active_instances_rwlock);"},{"line_number":331,"context_line":"    if (rc !\u003d 0) {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"e565d974_61e87439","line":328,"updated":"2026-04-06 04:42:19.000000000","message":"Should maybe check that the caller passed in `NULL` instead -- otherwise it (maybe?) becomes easier to leak sessions.","commit_id":"cb8be3373d963879d19f21d2ba8446edb3d29192"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5d16e2d6021c6b6724e8018983555e53c719bbdc","unresolved":false,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"int liberasurecode_session_open(int desc, ec_session_t *session)"},{"line_number":327,"context_line":"{"},{"line_number":328,"context_line":"    *session \u003d NULL;"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    int rc \u003d rwlock_wrlock(\u0026active_instances_rwlock);"},{"line_number":331,"context_line":"    if (rc !\u003d 0) {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"e44d152a_f42731da","line":328,"in_reply_to":"e565d974_61e87439","updated":"2026-04-08 01:27:38.000000000","message":"Done","commit_id":"cb8be3373d963879d19f21d2ba8446edb3d29192"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7d644b921b15f20e4e2f77701e0f31e46085e314","unresolved":true,"context_lines":[{"line_number":336,"context_line":"        rc \u003d -EBACKENDNOTAVAIL;"},{"line_number":337,"context_line":"        goto out;"},{"line_number":338,"context_line":"    }"},{"line_number":339,"context_line":"    *session \u003d calloc(1, sizeof(struct ec_session));"},{"line_number":340,"context_line":"    if (NULL \u003d\u003d *session) {"},{"line_number":341,"context_line":"        rc \u003d -ENOMEM;"},{"line_number":342,"context_line":"        goto out;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"7f1a505a_752871f8","line":339,"range":{"start_line":339,"start_character":15,"end_line":339,"end_character":21},"updated":"2026-04-06 04:42:19.000000000","message":"Should be fine to use `malloc` -- we initialize the whole struct if allocation succeeds.","commit_id":"cb8be3373d963879d19f21d2ba8446edb3d29192"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"5d16e2d6021c6b6724e8018983555e53c719bbdc","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        rc \u003d -EBACKENDNOTAVAIL;"},{"line_number":337,"context_line":"        goto out;"},{"line_number":338,"context_line":"    }"},{"line_number":339,"context_line":"    *session \u003d calloc(1, sizeof(struct ec_session));"},{"line_number":340,"context_line":"    if (NULL \u003d\u003d *session) {"},{"line_number":341,"context_line":"        rc \u003d -ENOMEM;"},{"line_number":342,"context_line":"        goto out;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"a5bd3468_07ddc7be","line":339,"range":{"start_line":339,"start_character":15,"end_line":339,"end_character":21},"in_reply_to":"7f1a505a_752871f8","updated":"2026-04-08 01:27:38.000000000","message":"Done","commit_id":"cb8be3373d963879d19f21d2ba8446edb3d29192"}]}
