diff --git a/src/apps/bin/keymap/Keymap.cpp b/src/apps/bin/keymap/Keymap.cpp index b64bdf3c80..899bdda0fd 100644 --- a/src/apps/bin/keymap/Keymap.cpp +++ b/src/apps/bin/keymap/Keymap.cpp @@ -220,13 +220,18 @@ Keymap::Dump() } -void +status_t Keymap::LoadCurrent() { - key_map *keys; + key_map *keys = NULL; get_key_map(&keys, &fChars); + if (!keys) { + fprintf(stderr, "error while getting current keymap!\n"); + return B_ERROR; + } memcpy(&fKeys, keys, sizeof(fKeys)); delete keys; + return B_OK; } /* diff --git a/src/apps/bin/keymap/Keymap.h b/src/apps/bin/keymap/Keymap.h index da9da2c8d6..716f6f060f 100644 --- a/src/apps/bin/keymap/Keymap.h +++ b/src/apps/bin/keymap/Keymap.h @@ -23,7 +23,7 @@ class Keymap { public: - void LoadCurrent(); + status_t LoadCurrent(); status_t Load(entry_ref &ref); status_t Save(entry_ref &ref); status_t LoadSource(FILE *f); diff --git a/src/apps/bin/keymap/key_map.cpp b/src/apps/bin/keymap/key_map.cpp index e9b8f90c63..43f37d93b3 100644 --- a/src/apps/bin/keymap/key_map.cpp +++ b/src/apps/bin/keymap/key_map.cpp @@ -46,7 +46,8 @@ int main(int argc, char **argv) break; if (operation == 'd') { Keymap keymap; - keymap.LoadCurrent(); + if (keymap.LoadCurrent() != B_OK) + return 1; keymap.Dump(); return 0; } else if (operation == 'r') {