Fix potential lisp-object ID generation overflow for excessive lisp-object creation.
Thu Jul 2 21:37:42 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Fix potential lisp-object ID generation overflow for excessive lisp-object creation.
hunk ./src/lib/lisp-object.cpp 32
-lisp_object::data::data(int id)
+lisp_object::data::data(unsigned int id)
hunk ./src/lib/lisp-object.cpp 64
-lisp_object::lisp_object(int id)
+lisp_object::lisp_object(unsigned int id)
hunk ./src/lib/lisp-object.cpp 91
-lisp_object::set_id(int id)
+lisp_object::set_id(unsigned int id)
hunk ./src/lib/lisp-object.cpp 124
-int
+unsigned int
hunk ./src/lib/lisp-object.cpp 138
-qt_smoke_lisp_object_set(const void* object)
+qt_smoke_lisp_object_is_set(const void* object)
hunk ./src/lib/lisp-object.cpp 150
-qt_smoke_make_lisp_object(int id)
+qt_smoke_make_lisp_object(unsigned int id)
hunk ./src/lib/lisp-object.h 16
- CL_SMOKE_QT_EXPORT int
+ CL_SMOKE_QT_EXPORT unsigned int
hunk ./src/lib/lisp-object.h 20
- qt_smoke_lisp_object_set(const void* object);
+ qt_smoke_lisp_object_is_set(const void* object);
hunk ./src/lib/lisp-object.h 23
- qt_smoke_make_lisp_object(int id);
+ qt_smoke_make_lisp_object(unsigned int id);
hunk ./src/lib/lisp-object.h 38
- typedef void (*destructor)(int id);
+ typedef void (*destructor)(unsigned int id);
hunk ./src/lib/lisp-object.h 42
- lisp_object(int id);
+ lisp_object(unsigned int id);
hunk ./src/lib/lisp-object.h 46
- inline int
+ inline unsigned int
hunk ./src/lib/lisp-object.h 51
- set_id(int id);
+ set_id(unsigned int id);
hunk ./src/lib/lisp-object.h 64
- data(int id);
+ data(unsigned int id);
hunk ./src/lib/lisp-object.h 66
- int id;
+ unsigned int id;
hunk ./src/lisp-object.lisp 7
+ (declare (type (smoke::c-integer :unsigned-int) id))
hunk ./src/lisp-object.lisp 10
- (incf id)))
-
+ (loop do
+ (setf id
+ (logand (1- (expt 2 (* 8 (foreign-type-size :unsigned-int) )))
+ (1+ id)))
+ while (nth-value 1 (gethash id *cxx-lisp-objects*)))
+ id))
+ [_$_]
hunk ./src/lisp-object.lisp 20
-(defcfun qt-smoke-lisp-object-id :int
+(defcfun qt-smoke-lisp-object-id :unsigned-int
hunk ./src/lisp-object.lisp 23
-(defcfun qt-smoke-lisp-object-set :int
+(defcfun qt-smoke-lisp-object-is-set :int
hunk ./src/lisp-object.lisp 27
- (id :int))
+ (id :unsigned-int))
hunk ./src/lisp-object.lisp 33
- ((id :int))
+ ((id :unsigned-int))