projects
/
cs356-p1-elevator.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
5c28697
)
Fix underflow in Position
author
Ira W. Snyder
<devel@irasnyder.com>
Fri, 5 Oct 2007 18:26:17 +0000
(11:26 -0700)
committer
Ira W. Snyder
<devel@irasnyder.com>
Fri, 5 Oct 2007 18:26:17 +0000
(11:26 -0700)
The operator-=() function in Position could underflow the part right of the
decimal point. Fix it.
Signed-off-by: Ira W. Snyder <devel@irasnyder.com>
position.cpp
patch
|
blob
|
history
diff --git
a/position.cpp
b/position.cpp
index
f1cfc90
..
e0da0f4
100644
(file)
--- a/
position.cpp
+++ b/
position.cpp
@@
-44,7
+44,18
@@
Position& Position::operator+= (const float rhs)
Position& Position::operator-= (const float rhs)
{
- *this += -rhs;
+ int major = (int)rhs;
+ int minor = (int)((rhs - major) * 10);
+
+ major_ -= major;
+ minor_ -= minor;
+
+ /* Check for underflow */
+ if (minor_ < 0)
+ {
+ major_ -= 1;
+ minor_ += 10;
+ }
return *this;
}