MCPcopy Create free account
hub / github.com/git/git / reftable_obj_record_decode

Function reftable_obj_record_decode

reftable/record.c:559–614  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

557}
558
559static int reftable_obj_record_decode(void *rec, struct reftable_buf key,
560 uint8_t val_type, struct string_view in,
561 uint32_t hash_size REFTABLE_UNUSED,
562 struct reftable_buf *scratch REFTABLE_UNUSED)
563{
564 struct string_view start = in;
565 struct reftable_obj_record *r = rec;
566 uint64_t count = val_type;
567 int n = 0;
568 uint64_t last;
569
570 reftable_obj_record_release(r);
571
572 REFTABLE_ALLOC_ARRAY(r->hash_prefix, key.len);
573 if (!r->hash_prefix)
574 return REFTABLE_OUT_OF_MEMORY_ERROR;
575 memcpy(r->hash_prefix, key.buf, key.len);
576 r->hash_prefix_len = key.len;
577
578 if (val_type == 0) {
579 n = get_var_int(&count, &in);
580 if (n < 0) {
581 return n;
582 }
583
584 string_view_consume(&in, n);
585 }
586
587 r->offsets = NULL;
588 r->offset_len = 0;
589 if (count == 0)
590 return start.len - in.len;
591
592 REFTABLE_ALLOC_ARRAY(r->offsets, count);
593 if (!r->offsets)
594 return REFTABLE_OUT_OF_MEMORY_ERROR;
595 r->offset_len = count;
596
597 n = get_var_int(&r->offsets[0], &in);
598 if (n < 0)
599 return n;
600 string_view_consume(&in, n);
601
602 last = r->offsets[0];
603 for (uint64_t j = 1; j < count; j++) {
604 uint64_t delta = 0;
605 int n = get_var_int(&delta, &in);
606 if (n < 0) {
607 return n;
608 }
609 string_view_consume(&in, n);
610
611 last = r->offsets[j] = (delta + last);
612 }
613 return start.len - in.len;
614}
615
616static int not_a_deletion(const void *p REFTABLE_UNUSED)

Callers

nothing calls this directly

Calls 3

get_var_intFunction · 0.85
string_view_consumeFunction · 0.85

Tested by

no test coverage detected