pike.git / src / post_modules / Shuffler / a_source_stdio_buffer.c

version» Context lines:

pike.git/src/post_modules/Shuffler/a_source_stdio_buffer.c:61:    || find_identifier("read_buffer", s->u.object->prog) < 0)    return 0;       if (!(res = calloc(1, sizeof(struct sb_source))))    return 0;       o = s->u.object;       {    Buffer *io = io_buffer_from_object(o); -  INT64 slen; +  INT64 slen = io_len(io);    -  if (start) +  if (start) { +  if (start > slen) +  start = slen;    io_consume(io, start); -  +  slen -= start; +  }    -  slen = io_len(io); -  if (len >= 0 && slen < len) -  slen = len; -  if (slen < 0) -  slen = 0; -  push_int64(slen); +  if (len < 0) +  len = slen; +  if (len > slen) +  len = slen; +  +  push_int64(len);    apply(o, "read_buffer", 1);    }       if (TYPEOF(Pike_sp[-1]) != PIKE_T_OBJECT)    Pike_error("Some data went missing.\n");       o = Pike_sp[-1].u.object;    Pike_sp--;       res->lastlen = 0;