Commit 7a1870d564cfd99e370117a6e13d7fa05f0cdcf0
1 parent
62f0b5fa
Exists in
master
and in
3 other branches
Fixing segfault when user press enter on a locked terminal.
Showing
1 changed file
with
11 additions
and
7 deletions
Show diff stats
src/lib3270/kybd.c
| ... | ... | @@ -172,6 +172,7 @@ struct ta * new_ta(H3270 *hSession, enum _ta_type type) |
| 172 | 172 | // If typeahead disabled, complain and drop it. |
| 173 | 173 | if (!hSession->typeahead) |
| 174 | 174 | { |
| 175 | + lib3270_ring_bell(hSession); | |
| 175 | 176 | lib3270_trace_event(hSession,"typeahead action dropped (no typeahead)\n"); |
| 176 | 177 | return NULL; |
| 177 | 178 | } |
| ... | ... | @@ -206,7 +207,7 @@ struct ta * new_ta(H3270 *hSession, enum _ta_type type) |
| 206 | 207 | { |
| 207 | 208 | struct ta *ta = new_ta(hSession, TA_TYPE_KEY_AID); |
| 208 | 209 | |
| 209 | - if(!ta) | |
| 210 | + if(ta) | |
| 210 | 211 | return; |
| 211 | 212 | |
| 212 | 213 | ta->args.aid_code = aid_code; |
| ... | ... | @@ -241,11 +242,13 @@ void enq_action(H3270 *hSession, int (*fn)(H3270 *)) |
| 241 | 242 | { |
| 242 | 243 | struct ta *ta = new_ta(hSession, TA_TYPE_ACTION); |
| 243 | 244 | |
| 244 | - ta->args.action = fn; | |
| 245 | + if(!ta) | |
| 246 | + return; | |
| 245 | 247 | |
| 248 | + ta->args.action = fn; | |
| 246 | 249 | lib3270_trace_event(hSession,"single action queued (kybdlock 0x%x)\n", hSession->kybdlock); |
| 247 | -} | |
| 248 | 250 | |
| 251 | +} | |
| 249 | 252 | |
| 250 | 253 | /** |
| 251 | 254 | * @brief Execute an action from the typeahead queue. |
| ... | ... | @@ -442,10 +445,11 @@ static void operator_error(H3270 *hSession, int error_type) |
| 442 | 445 | } |
| 443 | 446 | } |
| 444 | 447 | |
| 445 | - | |
| 446 | -/* | |
| 447 | - * Handle an AID (Attention IDentifier) key. This is the common stuff that | |
| 448 | - * gets executed for all AID keys (PFs, PAs, Clear and etc). | |
| 448 | +/** | |
| 449 | + * @brief Handle an AID (Attention IDentifier) key. | |
| 450 | + * | |
| 451 | + * This is the common stuff that gets executed for all AID keys (PFs, PAs, Clear and etc). | |
| 452 | + * | |
| 449 | 453 | */ |
| 450 | 454 | static void key_AID(H3270 *hSession, unsigned char aid_code) |
| 451 | 455 | { | ... | ... |