--- a/ExternalAddress.st Thu Mar 20 21:17:44 1997 +0100
+++ b/ExternalAddress.st Thu Mar 20 21:18:28 1997 +0100
@@ -143,7 +143,29 @@
%{ /* NOCONTEXT */
unsigned addr = (unsigned) __externalAddressVal(self);
- RETURN (__MKSMALLINT(addr >> 2));
+ if (addr > _MAX_INT) {
+ if ((addr & 1) == 0) {
+ addr >>= 1;
+ }
+ if (addr > _MAX_INT) {
+ if ((addr & 1) == 0) {
+ addr >>= 1;
+ }
+ }
+ if (addr > _MAX_INT) {
+ addr &= _MAX_INT;
+ }
+ } else {
+ addr <<= 1;
+ if (addr <= _MAX_INT) {
+ addr <<= 1;
+ if (addr <= _MAX_INT) {
+ addr <<= 1;
+ }
+ }
+ addr >>= 1;
+ }
+ RETURN (__MKSMALLINT(addr));
%}
! !
@@ -167,5 +189,5 @@
!ExternalAddress class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ExternalAddress.st,v 1.6 1996-11-11 11:31:08 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ExternalAddress.st,v 1.7 1997-03-20 20:18:28 cg Exp $'
! !