openSUSE Paste > mypaste
Login

Info:

By KDE, 2 Years ago, written in Text. This post will never expire.

URL: http://paste.opensuse.org/23129601

  1. diff --git a/src/lib/fcitx-utils/utils.c b/src/lib/fcitx-utils/utils.c
  2. index c97ff44..473abc3 100644
  3. --- a/src/lib/fcitx-utils/utils.c
  4. +++ b/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("");
  79.