Line 0
Link Here
|
|
|
1 |
diff --git src/lib/fcitx-utils/utils.c src/lib/fcitx-utils/utils.c |
2 |
index c97ff44..473abc3 100644 |
3 |
--- src/lib/fcitx-utils/utils.c |
4 |
+++ src/lib/fcitx-utils/utils.c |
5 |
@@ -337,19 +337,23 @@ int fcitx_utils_pid_exists(pid_t pid) |
6 |
if (vm == 0) // ignore all error |
7 |
return 1; |
8 |
|
9 |
- int cnt; |
10 |
- struct kinfo_proc * kp = kvm_getprocs(vm, KERN_PROC_PID, pid, &cnt); |
11 |
- if (kp == 0) |
12 |
- return 1; |
13 |
- int i; |
14 |
- for (i = 0; i < cnt; i++) |
15 |
- if (kp->ki_pid == pid) |
16 |
+ int result = 1; |
17 |
+ do { |
18 |
+ int cnt; |
19 |
+ struct kinfo_proc * kp = kvm_getprocs(vm, KERN_PROC_PID, pid, &cnt); |
20 |
+ if (kp == 0) { |
21 |
+ result = 1; |
22 |
break; |
23 |
- int result; |
24 |
- if (i != cnt) |
25 |
- result = 1; |
26 |
- else |
27 |
- result = 0; |
28 |
+ } |
29 |
+ int i; |
30 |
+ for (i = 0; i < cnt; i++) |
31 |
+ if (kp->ki_pid == pid) |
32 |
+ break; |
33 |
+ if (i != cnt) |
34 |
+ result = 1; |
35 |
+ else |
36 |
+ result = 0; |
37 |
+ } while (0); |
38 |
kvm_close(vm); |
39 |
return result; |
40 |
#else |
41 |
@@ -386,21 +390,24 @@ char* fcitx_utils_get_process_name() |
42 |
if (vm == 0) |
43 |
return strdup(""); |
44 |
|
45 |
- int cnt; |
46 |
- int mypid = getpid(); |
47 |
- struct kinfo_proc * kp = kvm_getprocs(vm, KERN_PROC_PID, mypid, &cnt); |
48 |
- if ((cnt != 1) || (kp == 0)) |
49 |
- return strdup(""); |
50 |
- int i; |
51 |
- for (i = 0; i < cnt; i++) |
52 |
- if (kp->ki_pid == mypid) |
53 |
- break; |
54 |
char* result = NULL; |
55 |
- if (i != cnt) |
56 |
- result = strdup(kp->ki_comm); |
57 |
- else |
58 |
- result = strdup(""); |
59 |
+ do { |
60 |
+ int cnt; |
61 |
+ int mypid = getpid(); |
62 |
+ struct kinfo_proc * kp = kvm_getprocs(vm, KERN_PROC_PID, mypid, &cnt); |
63 |
+ if ((cnt != 1) || (kp == 0)) { |
64 |
+ break; |
65 |
+ } |
66 |
+ int i; |
67 |
+ for (i = 0; i < cnt; i++) |
68 |
+ if (kp->ki_pid == mypid) |
69 |
+ break; |
70 |
+ if (i != cnt) |
71 |
+ result = strdup(kp->ki_comm); |
72 |
+ } while (0); |
73 |
kvm_close(vm); |
74 |
+ if (result == NULL) |
75 |
+ result = strdup(""); |
76 |
return result; |
77 |
#else |
78 |
return strdup(""); |