Changeset 25906 in project


Ignore:
Timestamp:
02/14/12 23:59:48 (9 years ago)
Author:
ecloud
Message:

initialize int return values to avoid garbage when reading smaller types

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/dbus/trunk/dbus.scm

    r25905 r25906  
    437437                                                                ,type-double-string ))
    438438                                        ((foreign-lambda* c-string ((message-iter-ptr iter))
    439                                                 "char* ret;
     439                                                "char* ret = NULL;
    440440                                                dbus_message_iter_get_basic(iter, &ret);
    441441                                                C_return (ret);") iter)]
     
    448448                                                                ,type-int16 ))
    449449                                        ((foreign-lambda* int ((message-iter-ptr iter))
    450                                                 "int ret;
     450                                                "int ret = 0;
    451451                                                dbus_message_iter_get_basic(iter, &ret);
    452452                                                C_return (ret);") iter)]
    453453                                [(memq type `(,type-uint32 ,type-uint16))
    454454                                        ((foreign-lambda* unsigned-int ((message-iter-ptr iter))
    455                                                 "unsigned int ret;
     455                                                "unsigned int ret = 0;
    456456                                                dbus_message_iter_get_basic(iter, &ret);
    457457                                                C_return (ret);") iter)]
    458458                                [(memq type `(,type-flonum ,type-uint64))
     459                                        ;; todo don't put 64-bit int into a flonum if there's another way
    459460                                        ((foreign-lambda* double ((message-iter-ptr iter))
    460461                                                "double ret;
     
    463464                                [(eq? type type-int64)
    464465                                        ((foreign-lambda* integer64 ((message-iter-ptr iter))
    465                                                 "int64_t ret;
     466                                                "int64_t ret = 0;
    466467                                                dbus_message_iter_get_basic(iter, &ret);
    467468                                                C_return (ret);") iter)]
     
    477478                                                ((make-sub-iter iter))
    478479                                                (make-variant ((make-sub-iter iter))))]
    479                                 ;; unsupported so far (not understood well enough):
     480
     481                                ;; todo: unsupported so far (not understood well enough):
    480482                                ;;      type-object-path and type-signature
    481                                 ;; type-invalid is returned as #f (could be (void) but that
    482                                 ;; would be the termination condition for the iterator)
     483
     484                                ;; so far the DBus "invalid" type is treated the same as unsupported.
     485                                ;; Maybe need a distinction though...
     486                                ; [(eq? type type-invalid) ...]
    483487                                [else (make-unsupported-type (integer->char type))] )))
    484488
Note: See TracChangeset for help on using the changeset viewer.