Exemple #1
0
static int
write_section_irep(mrb_state *mrb, mrb_irep *irep, uint8_t *bin)
{
  int result;
  size_t section_size = 0; /* size of irep record */
  size_t rsize = 0;
  uint8_t *cur = bin;

  if (mrb == NULL || bin == NULL) {
    return MRB_DUMP_INVALID_ARGUMENT;
  }

  cur += sizeof(struct rite_section_irep_header);
  section_size += sizeof(struct rite_section_irep_header);

  result = write_irep_record(mrb, irep, cur, &rsize);
  if (result != MRB_DUMP_OK) {
    return result;
  }
  cur += rsize;
  section_size += rsize;
  write_section_irep_header(mrb, section_size, bin);

  return MRB_DUMP_OK;
}
Exemple #2
0
static int
write_section_irep(mrb_state *mrb, mrb_irep *irep, uint8_t *bin, size_t *len_p, uint8_t flags)
{
  int result;
  size_t rsize = 0;
  uint8_t *cur = bin;

  if (mrb == NULL || bin == NULL) {
    return MRB_DUMP_INVALID_ARGUMENT;
  }

  cur += sizeof(struct rite_section_irep_header);

  result = write_irep_record(mrb, irep, cur, &rsize, flags);
  if (result != MRB_DUMP_OK) {
    return result;
  }
  *len_p = cur - bin + rsize;
  write_section_irep_header(mrb, *len_p, bin);

  return MRB_DUMP_OK;
}