Stdio.File()->lock() returns a destructed object.

Imported from http://bugzilla.roxen.com/bugzilla/show_bug.cgi?id=116

Reported by @grubba

mixed do_test()
{
  object o = Stdio.File("config.cache", "wr")->lock();
  werror("%O\n", mkmapping(indices(o), values(o)));
  return o && 1;
}

int main(int argc, array(string) argv)
{
  exit(do_test() != 1);
}

 $ /home/grubba/src/Pike7.1/build/sol7/pike -DNOT_INSTALLED
-m/home/grubba/src/Pike7.1/build/sol7/master.pike bug2.pike && echo Ok.
indices() on destructed object.
bug2.pike:4: do_test()
bug2.pike:10: main(1,({"/home/grubba/src/Pike7.1/build/sol7/bug2.pike"}))

modules/files/file.c line ~2495 - ~2498 looks suspicious.