in ext/mmap/mmap.c [1090:1109]
static int mm_correct_backref() {
VALUE match;
int i, start;
match = rb_backref_get();
if (NIL_P(match)) return 0;
if (RMATCH(match)->BEG(0) == -1) return 0;
start = RMATCH(match)->BEG(0);
RMATCH(match)->str = rb_str_new(StringValuePtr(RMATCH(match)->str) + start,
RMATCH(match)->END(0) - start);
if (OBJ_TAINTED(match)) OBJ_TAINT(RMATCH(match)->str);
for (i = 0; i < RMATCH(match)->rmatch->regs.num_regs &&
RMATCH(match)->BEG(i) != -1;
i++) {
RMATCH(match)->BEG(i) -= start;
RMATCH(match)->END(i) -= start;
}
rb_backref_set(match);
return start;
}