D2939: fsmonitor: layer on another hack in bser.c for os.stat() compat (issue5811)

durin42 (Augie Fackler) phabricator at mercurial-scm.org
Mon Mar 26 12:47:03 EDT 2018


durin42 added a comment.


  In https://phab.mercurial-scm.org/D2939#47601, @indygreg wrote:
  
  > This still fails for me with:
  >
  >     File "/home/gps/src/hg/mercurial/context.py", line 1590, in _dirstatestatus
  >       clean=clean, unknown=unknown)
  >     File "/home/gps/src/hg/mercurial/dirstate.py", line 1073, in status
  >       elif (time != st[stat.ST_MTIME]
  >   IndexError: tuple index out of range
  >
  >
  > Also, hacking the low-level bser data type at the bser level feels **very** wrong. I would rather we roll our own C type that holds a reference to the `bserObject` and provides the necessary object API. Although there are already Mercurial hacks in `bser.c` for `st_*` attribute access. So I could be convinced that this hack is acceptable.
  
  
  Yeah, I mostly wanted to verify a fix before trying to do something principled.
  
  > I can try debugging this failure if that would be helpful. Perhaps something in CPython land is evaluating `len()` and short-circuiting the `[8]` access.
  
  Yes, debugging would help a ton. I don't really have enough understanding to make enough headway here :(

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2939

To: durin42, #hg-reviewers, indygreg
Cc: indygreg, mercurial-devel


More information about the Mercurial-devel mailing list