mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
linelog.pyx: fix copyfrom
Summary: `copyfrom` does not work because `rhs.buf` is invisible to `self`. Adding a `readonly` keyword fixes it. Also add some sanity checks and remove an unnecessary `;`. Test Plan: `make local` and confirm `copyfrom` works. Reviewers: #mercurial, ttung, simonfar Reviewed By: simonfar Subscribers: simonfar, mjpieters Differential Revision: https://phabricator.intern.facebook.com/D3716444 Signature: t1:3716444:1471264420:1e58798222e1515ae6d5328ad6f2727cfe41cdb5
This commit is contained in:
parent
3258b8586d
commit
b30c3ad0e5
@ -67,7 +67,7 @@ class LinelogError(Exception):
|
||||
return self._messages.get(self.result, 'Unknown error %d' % self.result)
|
||||
|
||||
cdef class _buffer: # thin wrapper around linelog_buf
|
||||
cdef linelog_buf buf;
|
||||
cdef linelog_buf buf
|
||||
|
||||
def __cinit__(self):
|
||||
memset(&self.buf, 0, sizeof(linelog_buf))
|
||||
@ -82,7 +82,7 @@ cdef class _buffer: # thin wrapper around linelog_buf
|
||||
pass
|
||||
|
||||
cdef copyfrom(self, _buffer rhs):
|
||||
if rhs.buf.size == 0:
|
||||
if rhs.buf.size == 0 or &rhs.buf == &self.buf:
|
||||
return
|
||||
if rhs.buf.size > self.buf.size:
|
||||
self.resize(rhs.buf.size)
|
||||
@ -232,7 +232,7 @@ cdef class linelog:
|
||||
"""Python wrapper around linelog"""
|
||||
|
||||
cdef linelog_annotateresult ar
|
||||
cdef _buffer buf
|
||||
cdef readonly _buffer buf
|
||||
cdef readonly bint closed
|
||||
cdef readonly object path
|
||||
|
||||
@ -287,6 +287,7 @@ cdef class linelog:
|
||||
|
||||
Copy content from another linelog object."""
|
||||
assert isinstance(rhs, linelog)
|
||||
self._checkclosed()
|
||||
self.buf.copyfrom(rhs.buf)
|
||||
|
||||
@property
|
||||
|
Loading…
Reference in New Issue
Block a user