projects
/
dcpu16
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cleanup warnings in gcc, fixed some hw module cleanup routines
[dcpu16]
/
hw_keyboard.c
diff --git
a/hw_keyboard.c
b/hw_keyboard.c
index d5c90b3faf4b2af6f5a1519894c02107d8b7ea8d..90c30b3809590f9882a91da23f67a0af17d476c8 100644
(file)
--- a/
hw_keyboard.c
+++ b/
hw_keyboard.c
@@
-12,6
+12,12
@@
#define BUF_SZ 32
#define BUF_SZ 32
+#ifdef WANT_VARIADIC_VOIDP_CAST
+#define VOIDP(__x__) ((void *)(__x__))
+#else
+#define VOIDP(__x__) (__x__)
+#endif
+
static dcpu16_hw_signal_t keyboard_reset_;
static dcpu16_hw_signal_t keyboard_cycle_;
static dcpu16_hw_signal_t keyboard_hwi_;
static dcpu16_hw_signal_t keyboard_reset_;
static dcpu16_hw_signal_t keyboard_cycle_;
static dcpu16_hw_signal_t keyboard_hwi_;
@@
-83,10
+89,17
@@
void keyboard_rfbevent_(rfbBool down, rfbKeySym key, rfbClientPtr cl) {
keysym_rfbtodcpu(key, &dcpu_key);
keysym_rfbtodcpu(key, &dcpu_key);
- fprintf(stderr, "%s: down:%u key:0x%04x dcpu_key:0x%04x\n", __func__,
- down, key, dcpu_key);
+ fprintf(stderr, "%s: down:%u key:0x%04x dcpu_key:0x%04x\n",
+ __func__,
+ down,
+ key,
+ dcpu_key);
- fprintf(stderr, "%s: hw:%p name:%s vm:%p\n", __func__, hw, hw->name_, hw->vm);
+ fprintf(stderr, "%s: hw:%p name:%s vm:%p\n",
+ __func__,
+ VOIDP(hw),
+ hw->name_,
+ VOIDP(hw->vm));
keyboard->keys_pressed[dcpu_key] = (down ? 1 : 0);
if (down) {
keyboard->keys_pressed[dcpu_key] = (down ? 1 : 0);
if (down) {
@@
-192,13
+205,16
@@
struct dcpu16_hw *keyboard_new(struct dcpu16 *vm) {
void keyboard_del(struct dcpu16_hw **hw) {
if (hw) {
void keyboard_del(struct dcpu16_hw **hw) {
if (hw) {
- free(((struct keyboard_ *)((*hw)->data))->buf);
- ((struct keyboard_ *)((*hw)->data))->buf = NULL;
-
- free((*hw)->data);
- (*hw)->data = NULL;
-
- free(*hw);
- *hw = NULL;
+ if (*hw) {
+ if ((*hw)->data) {
+ free(((struct keyboard_ *)((*hw)->data))->buf);
+ ((struct keyboard_ *)((*hw)->data))->buf = NULL;
+
+ free((*hw)->data);
+ (*hw)->data = NULL;
+ }
+ free(*hw);
+ *hw = NULL;
+ }
}
}
}
}