|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 50/59] libxl: Fix Bitmap.Max(), make Test() / Clear() more robust
From: George Dunlap <george.dunlap@xxxxxxxxxx>
Bitmap.Max() should return the largest currently addressable bit; at the
moment it returns the total number of bits (which is one greater than
the largest addressable bit).
This also implicitly fixes a bug in Test() and Clear() which would cause
an out-of-range error when testing a bit equal to Max().
While we're here, allow Test() and Clear() to handle null bitmaps, the
same way Set() can.
Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx>
---
libxl.go | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libxl.go b/libxl.go
index dfe4f40..bfcaf0d 100644
--- a/libxl.go
+++ b/libxl.go
@@ -270,7 +270,7 @@ func bitmapGotoC(gbm Bitmap) (cbm C.libxl_bitmap) {
func (bm *Bitmap) Test(bit int) (bool) {
ubit := uint(bit)
- if (bit > bm.Max()) {
+ if (bit > bm.Max() || bm.bitmap == nil) {
return false
}
@@ -294,7 +294,7 @@ func (bm *Bitmap) SetRange(start int, end int) {
func (bm *Bitmap) Clear(bit int) {
ubit := uint(bit)
- if (bit > bm.Max()) {
+ if (bit > bm.Max() || bm.bitmap == nil) {
return
}
@@ -308,7 +308,7 @@ func (bm *Bitmap) ClearRange(start int, end int) {
}
func (bm *Bitmap) Max() (int) {
- return len(bm.bitmap) * 8
+ return len(bm.bitmap) * 8 - 1
}
func (bm *Bitmap) IsEmpty() (bool) {
--
2.7.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |