diff --git a/contrib/chg/hgclient.c b/contrib/chg/hgclient.c --- a/contrib/chg/hgclient.c +++ b/contrib/chg/hgclient.c @@ -84,8 +84,9 @@ static void enlargecontext(context_t *ctx, size_t newsize) { - if (newsize <= ctx->maxdatasize) + if (newsize <= ctx->maxdatasize) { return; + } newsize = defaultdatasize * ((newsize + defaultdatasize - 1) / defaultdatasize); @@ -117,22 +118,25 @@ uint32_t datasize_n; rsize = recv(hgc->sockfd, &datasize_n, sizeof(datasize_n), 0); - if (rsize != sizeof(datasize_n)) + if (rsize != sizeof(datasize_n)) { abortmsg("failed to read data size"); + } /* datasize denotes the maximum size to write if input request */ hgc->ctx.datasize = ntohl(datasize_n); enlargecontext(&hgc->ctx, hgc->ctx.datasize); - if (isupper(hgc->ctx.ch) && hgc->ctx.ch != 'S') + if (isupper(hgc->ctx.ch) && hgc->ctx.ch != 'S') { return; /* assumes input request */ + } size_t cursize = 0; while (cursize < hgc->ctx.datasize) { rsize = recv(hgc->sockfd, hgc->ctx.data + cursize, hgc->ctx.datasize - cursize, 0); - if (rsize < 1) + if (rsize < 1) { abortmsg("failed to read data block"); + } cursize += rsize; } } @@ -143,8 +147,9 @@ const char *const endp = p + datasize; while (p < endp) { ssize_t r = send(sockfd, p, endp - p, 0); - if (r < 0) + if (r < 0) { abortmsgerrno("cannot communicate"); + } p += r; } } @@ -186,8 +191,9 @@ ctx->datasize += n; } - if (ctx->datasize > 0) + if (ctx->datasize > 0) { --ctx->datasize; /* strip last '\0' */ + } } /* Extract '\0'-separated list of args to new buffer, terminated by NULL */ @@ -205,8 +211,9 @@ args[nargs] = s; nargs++; s = memchr(s, '\0', e - s); - if (!s) + if (!s) { break; + } s++; } args[nargs] = NULL; @@ -225,8 +232,9 @@ static void handlereadlinerequest(hgclient_t *hgc) { context_t *ctx = &hgc->ctx; - if (!fgets(ctx->data, ctx->datasize, stdin)) + if (!fgets(ctx->data, ctx->datasize, stdin)) { ctx->data[0] = '\0'; + } ctx->datasize = strlen(ctx->data); writeblock(hgc); } @@ -239,8 +247,9 @@ ctx->data[ctx->datasize] = '\0'; /* terminate last string */ const char **args = unpackcmdargsnul(ctx); - if (!args[0] || !args[1] || !args[2]) + if (!args[0] || !args[1] || !args[2]) { abortmsg("missing type or command or cwd in system request"); + } if (strcmp(args[0], "system") == 0) { debugmsg("run '%s' at '%s'", args[1], args[2]); int32_t r = runshellcmd(args[1], args + 3, args[2]); @@ -252,8 +261,9 @@ writeblock(hgc); } else if (strcmp(args[0], "pager") == 0) { setuppager(args[1], args + 3); - if (hgc->capflags & CAP_ATTACHIO) + if (hgc->capflags & CAP_ATTACHIO) { attachio(hgc); + } /* unblock the server */ static const char emptycmd[] = "\n"; sendall(hgc->sockfd, emptycmd, sizeof(emptycmd) - 1); @@ -296,9 +306,10 @@ handlesystemrequest(hgc); break; default: - if (isupper(ctx->ch)) + if (isupper(ctx->ch)) { abortmsg("cannot handle response (ch = %c)", ctx->ch); + } } } } @@ -308,8 +319,9 @@ unsigned int flags = 0; while (s < e) { const char *t = strchr(s, ' '); - if (!t || t > e) + if (!t || t > e) { t = e; + } const cappair_t *cap; for (cap = captable; cap->flag; ++cap) { size_t n = t - s; @@ -346,11 +358,13 @@ const char *const dataend = ctx->data + ctx->datasize; while (s < dataend) { const char *t = strchr(s, ':'); - if (!t || t[1] != ' ') + if (!t || t[1] != ' ') { break; + } const char *u = strchr(t + 2, '\n'); - if (!u) + if (!u) { u = dataend; + } if (strncmp(s, "capabilities:", t - s + 1) == 0) { hgc->capflags = parsecapabilities(t + 2, u); } else if (strncmp(s, "pgid:", t - s + 1) == 0) { @@ -367,8 +381,9 @@ { int r = snprintf(hgc->ctx.data, hgc->ctx.maxdatasize, "chg[worker/%d]", (int)getpid()); - if (r < 0 || (size_t)r >= hgc->ctx.maxdatasize) + if (r < 0 || (size_t)r >= hgc->ctx.maxdatasize) { abortmsg("insufficient buffer to write procname (r = %d)", r); + } hgc->ctx.datasize = (size_t)r; writeblockrequest(hgc, "setprocname"); } @@ -380,8 +395,9 @@ sendall(hgc->sockfd, chcmd, sizeof(chcmd) - 1); readchannel(hgc); context_t *ctx = &hgc->ctx; - if (ctx->ch != 'I') + if (ctx->ch != 'I') { abortmsg("unexpected response for attachio (ch = %c)", ctx->ch); + } static const int fds[3] = {STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO}; struct msghdr msgh; @@ -399,23 +415,27 @@ memcpy(CMSG_DATA(cmsg), fds, sizeof(fds)); msgh.msg_controllen = cmsg->cmsg_len; ssize_t r = sendmsg(hgc->sockfd, &msgh, 0); - if (r < 0) + if (r < 0) { abortmsgerrno("sendmsg failed"); + } handleresponse(hgc); int32_t n; - if (ctx->datasize != sizeof(n)) + if (ctx->datasize != sizeof(n)) { abortmsg("unexpected size of attachio result"); + } memcpy(&n, ctx->data, sizeof(n)); n = ntohl(n); - if (n != sizeof(fds) / sizeof(fds[0])) + if (n != sizeof(fds) / sizeof(fds[0])) { abortmsg("failed to send fds (n = %d)", n); + } } static void chdirtocwd(hgclient_t *hgc) { - if (!getcwd(hgc->ctx.data, hgc->ctx.maxdatasize)) + if (!getcwd(hgc->ctx.data, hgc->ctx.maxdatasize)) { abortmsgerrno("failed to getcwd"); + } hgc->ctx.datasize = strlen(hgc->ctx.data); writeblockrequest(hgc, "chdir"); } @@ -440,8 +460,9 @@ hgclient_t *hgc_open(const char *sockname) { int fd = socket(AF_UNIX, SOCK_STREAM, 0); - if (fd < 0) + if (fd < 0) { abortmsgerrno("cannot create socket"); + } /* don't keep fd on fork(), so that it can be closed when the parent * process get terminated. */ @@ -456,34 +477,39 @@ { const char *split = strrchr(sockname, '/'); if (split && split != sockname) { - if (split[1] == '\0') + if (split[1] == '\0') { abortmsg("sockname cannot end with a slash"); + } size_t len = split - sockname; char sockdir[len + 1]; memcpy(sockdir, sockname, len); sockdir[len] = '\0'; bakfd = open(".", O_DIRECTORY); - if (bakfd == -1) + if (bakfd == -1) { abortmsgerrno("cannot open cwd"); + } int r = chdir(sockdir); - if (r != 0) + if (r != 0) { abortmsgerrno("cannot chdir %s", sockdir); + } basename = split + 1; } } - if (strlen(basename) >= sizeof(addr.sun_path)) + if (strlen(basename) >= sizeof(addr.sun_path)) { abortmsg("sockname is too long: %s", basename); + } strncpy(addr.sun_path, basename, sizeof(addr.sun_path)); addr.sun_path[sizeof(addr.sun_path) - 1] = '\0'; /* real connect */ int r = connect(fd, (struct sockaddr *)&addr, sizeof(addr)); if (r < 0) { - if (errno != ENOENT && errno != ECONNREFUSED) + if (errno != ENOENT && errno != ECONNREFUSED) { abortmsgerrno("cannot connect to %s", sockname); + } } if (bakfd != -1) { fchdirx(bakfd); @@ -501,16 +527,21 @@ initcontext(&hgc->ctx); readhello(hgc); - if (!(hgc->capflags & CAP_RUNCOMMAND)) + if (!(hgc->capflags & CAP_RUNCOMMAND)) { abortmsg("insufficient capability: runcommand"); - if (hgc->capflags & CAP_SETPROCNAME) + } + if (hgc->capflags & CAP_SETPROCNAME) { updateprocname(hgc); - if (hgc->capflags & CAP_ATTACHIO) + } + if (hgc->capflags & CAP_ATTACHIO) { attachio(hgc); - if (hgc->capflags & CAP_CHDIR) + } + if (hgc->capflags & CAP_CHDIR) { chdirtocwd(hgc); - if (hgc->capflags & CAP_SETUMASK2) + } + if (hgc->capflags & CAP_SETUMASK2) { forwardumask(hgc); + } return hgc; } @@ -555,16 +586,18 @@ size_t argsize) { assert(hgc); - if (!(hgc->capflags & CAP_VALIDATE)) + if (!(hgc->capflags & CAP_VALIDATE)) { return NULL; + } packcmdargs(&hgc->ctx, args, argsize); writeblockrequest(hgc, "validate"); handleresponse(hgc); /* the server returns '\0' if it can handle our request */ - if (hgc->ctx.datasize <= 1) + if (hgc->ctx.datasize <= 1) { return NULL; + } /* make sure the buffer is '\0' terminated */ enlargecontext(&hgc->ctx, hgc->ctx.datasize + 1); @@ -599,8 +632,9 @@ void hgc_attachio(hgclient_t *hgc) { assert(hgc); - if (!(hgc->capflags & CAP_ATTACHIO)) + if (!(hgc->capflags & CAP_ATTACHIO)) { return; + } attachio(hgc); } @@ -613,8 +647,9 @@ void hgc_setenv(hgclient_t *hgc, const char *const envp[]) { assert(hgc && envp); - if (!(hgc->capflags & CAP_SETENV)) + if (!(hgc->capflags & CAP_SETENV)) { return; + } packcmdargs(&hgc->ctx, envp, /*argsize*/ -1); writeblockrequest(hgc, "setenv"); } diff --git a/contrib/chg/procutil.c b/contrib/chg/procutil.c --- a/contrib/chg/procutil.c +++ b/contrib/chg/procutil.c @@ -25,8 +25,9 @@ static void forwardsignal(int sig) { assert(peerpid > 0); - if (kill(peerpid, sig) < 0) + if (kill(peerpid, sig) < 0) { abortmsgerrno("cannot kill %d", peerpid); + } debugmsg("forward signal %d", sig); } @@ -34,8 +35,9 @@ { /* prefer kill(-pgid, sig), fallback to pid if pgid is invalid */ pid_t killpid = peerpgid > 1 ? -peerpgid : peerpid; - if (kill(killpid, sig) < 0) + if (kill(killpid, sig) < 0) { abortmsgerrno("cannot kill %d", killpid); + } debugmsg("forward signal %d to %d", sig, killpid); } @@ -43,28 +45,36 @@ { sigset_t unblockset, oldset; struct sigaction sa, oldsa; - if (sigemptyset(&unblockset) < 0) + if (sigemptyset(&unblockset) < 0) { goto error; - if (sigaddset(&unblockset, sig) < 0) + } + if (sigaddset(&unblockset, sig) < 0) { goto error; + } memset(&sa, 0, sizeof(sa)); sa.sa_handler = SIG_DFL; sa.sa_flags = SA_RESTART; - if (sigemptyset(&sa.sa_mask) < 0) + if (sigemptyset(&sa.sa_mask) < 0) { goto error; + } forwardsignal(sig); - if (raise(sig) < 0) /* resend to self */ + if (raise(sig) < 0) { /* resend to self */ goto error; - if (sigaction(sig, &sa, &oldsa) < 0) + } + if (sigaction(sig, &sa, &oldsa) < 0) { goto error; - if (sigprocmask(SIG_UNBLOCK, &unblockset, &oldset) < 0) + } + if (sigprocmask(SIG_UNBLOCK, &unblockset, &oldset) < 0) { goto error; + } /* resent signal will be handled before sigprocmask() returns */ - if (sigprocmask(SIG_SETMASK, &oldset, NULL) < 0) + if (sigprocmask(SIG_SETMASK, &oldset, NULL) < 0) { goto error; - if (sigaction(sig, &oldsa, NULL) < 0) + } + if (sigaction(sig, &oldsa, NULL) < 0) { goto error; + } return; error: @@ -73,19 +83,22 @@ static void handlechildsignal(int sig UNUSED_) { - if (peerpid == 0 || pagerpid == 0) + if (peerpid == 0 || pagerpid == 0) { return; + } /* if pager exits, notify the server with SIGPIPE immediately. * otherwise the server won't get SIGPIPE if it does not write * anything. (issue5278) */ - if (waitpid(pagerpid, NULL, WNOHANG) == pagerpid) + if (waitpid(pagerpid, NULL, WNOHANG) == pagerpid) { kill(peerpid, SIGPIPE); + } } void setupsignalhandler(pid_t pid, pid_t pgid) { - if (pid <= 0) + if (pid <= 0) { return; + } peerpid = pid; peerpgid = (pgid <= 1 ? 0 : pgid); @@ -98,42 +111,52 @@ * - SIGINT: usually generated by the terminal */ sa.sa_handler = forwardsignaltogroup; sa.sa_flags = SA_RESTART; - if (sigemptyset(&sa.sa_mask) < 0) + if (sigemptyset(&sa.sa_mask) < 0) { + goto error; + } + if (sigaction(SIGHUP, &sa, NULL) < 0) { goto error; - if (sigaction(SIGHUP, &sa, NULL) < 0) + } + if (sigaction(SIGINT, &sa, NULL) < 0) { goto error; - if (sigaction(SIGINT, &sa, NULL) < 0) - goto error; + } /* terminate frontend by double SIGTERM in case of server freeze */ sa.sa_handler = forwardsignal; sa.sa_flags |= SA_RESETHAND; - if (sigaction(SIGTERM, &sa, NULL) < 0) + if (sigaction(SIGTERM, &sa, NULL) < 0) { goto error; + } /* notify the worker about window resize events */ sa.sa_flags = SA_RESTART; - if (sigaction(SIGWINCH, &sa, NULL) < 0) + if (sigaction(SIGWINCH, &sa, NULL) < 0) { goto error; + } /* forward user-defined signals */ - if (sigaction(SIGUSR1, &sa, NULL) < 0) + if (sigaction(SIGUSR1, &sa, NULL) < 0) { goto error; - if (sigaction(SIGUSR2, &sa, NULL) < 0) + } + if (sigaction(SIGUSR2, &sa, NULL) < 0) { goto error; + } /* propagate job control requests to worker */ sa.sa_handler = forwardsignal; sa.sa_flags = SA_RESTART; - if (sigaction(SIGCONT, &sa, NULL) < 0) + if (sigaction(SIGCONT, &sa, NULL) < 0) { goto error; + } sa.sa_handler = handlestopsignal; sa.sa_flags = SA_RESTART; - if (sigaction(SIGTSTP, &sa, NULL) < 0) + if (sigaction(SIGTSTP, &sa, NULL) < 0) { goto error; + } /* get notified when pager exits */ sa.sa_handler = handlechildsignal; sa.sa_flags = SA_RESTART; - if (sigaction(SIGCHLD, &sa, NULL) < 0) + if (sigaction(SIGCHLD, &sa, NULL) < 0) { goto error; + } return; @@ -147,26 +170,34 @@ memset(&sa, 0, sizeof(sa)); sa.sa_handler = SIG_DFL; sa.sa_flags = SA_RESTART; - if (sigemptyset(&sa.sa_mask) < 0) + if (sigemptyset(&sa.sa_mask) < 0) { goto error; + } - if (sigaction(SIGHUP, &sa, NULL) < 0) + if (sigaction(SIGHUP, &sa, NULL) < 0) { goto error; - if (sigaction(SIGTERM, &sa, NULL) < 0) + } + if (sigaction(SIGTERM, &sa, NULL) < 0) { goto error; - if (sigaction(SIGWINCH, &sa, NULL) < 0) + } + if (sigaction(SIGWINCH, &sa, NULL) < 0) { goto error; - if (sigaction(SIGCONT, &sa, NULL) < 0) + } + if (sigaction(SIGCONT, &sa, NULL) < 0) { goto error; - if (sigaction(SIGTSTP, &sa, NULL) < 0) + } + if (sigaction(SIGTSTP, &sa, NULL) < 0) { goto error; - if (sigaction(SIGCHLD, &sa, NULL) < 0) + } + if (sigaction(SIGCHLD, &sa, NULL) < 0) { goto error; + } /* ignore Ctrl+C while shutting down to make pager exits cleanly */ sa.sa_handler = SIG_IGN; - if (sigaction(SIGINT, &sa, NULL) < 0) + if (sigaction(SIGINT, &sa, NULL) < 0) { goto error; + } peerpid = 0; return; @@ -180,22 +211,27 @@ pid_t setuppager(const char *pagercmd, const char *envp[]) { assert(pagerpid == 0); - if (!pagercmd) + if (!pagercmd) { return 0; + } int pipefds[2]; - if (pipe(pipefds) < 0) + if (pipe(pipefds) < 0) { return 0; + } pid_t pid = fork(); - if (pid < 0) + if (pid < 0) { goto error; + } if (pid > 0) { close(pipefds[0]); - if (dup2(pipefds[1], fileno(stdout)) < 0) + if (dup2(pipefds[1], fileno(stdout)) < 0) { goto error; + } if (isatty(fileno(stderr))) { - if (dup2(pipefds[1], fileno(stderr)) < 0) + if (dup2(pipefds[1], fileno(stderr)) < 0) { goto error; + } } close(pipefds[1]); pagerpid = pid; @@ -222,16 +258,18 @@ void waitpager(void) { - if (pagerpid == 0) + if (pagerpid == 0) { return; + } /* close output streams to notify the pager its input ends */ fclose(stdout); fclose(stderr); while (1) { pid_t ret = waitpid(pagerpid, NULL, 0); - if (ret == -1 && errno == EINTR) + if (ret == -1 && errno == EINTR) { continue; + } break; } } diff --git a/contrib/chg/util.c b/contrib/chg/util.c --- a/contrib/chg/util.c +++ b/contrib/chg/util.c @@ -25,8 +25,9 @@ static inline void fsetcolor(FILE *fp, const char *code) { - if (!colorenabled) + if (!colorenabled) { return; + } fprintf(fp, "\033[%sm", code); } @@ -35,8 +36,9 @@ fsetcolor(stderr, "1;31"); fputs("chg: abort: ", stderr); vfprintf(stderr, fmt, args); - if (no != 0) + if (no != 0) { fprintf(stderr, " (errno = %d, %s)", no, strerror(no)); + } fsetcolor(stderr, ""); fputc('\n', stderr); exit(255); @@ -82,8 +84,9 @@ void debugmsg(const char *fmt, ...) { - if (!debugmsgenabled) + if (!debugmsgenabled) { return; + } va_list args; va_start(args, fmt); @@ -98,32 +101,37 @@ void fchdirx(int dirfd) { int r = fchdir(dirfd); - if (r == -1) + if (r == -1) { abortmsgerrno("failed to fchdir"); + } } void fsetcloexec(int fd) { int flags = fcntl(fd, F_GETFD); - if (flags < 0) + if (flags < 0) { abortmsgerrno("cannot get flags of fd %d", fd); - if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) < 0) + } + if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) < 0) { abortmsgerrno("cannot set flags of fd %d", fd); + } } void *mallocx(size_t size) { void *result = malloc(size); - if (!result) + if (!result) { abortmsg("failed to malloc"); + } return result; } void *reallocx(void *ptr, size_t size) { void *result = realloc(ptr, size); - if (!result) + if (!result) { abortmsg("failed to realloc"); + } return result; } @@ -144,30 +152,37 @@ memset(&newsa, 0, sizeof(newsa)); newsa.sa_handler = SIG_IGN; newsa.sa_flags = 0; - if (sigemptyset(&newsa.sa_mask) < 0) + if (sigemptyset(&newsa.sa_mask) < 0) { goto done; - if (sigaction(SIGINT, &newsa, &oldsaint) < 0) + } + if (sigaction(SIGINT, &newsa, &oldsaint) < 0) { goto done; + } doneflags |= F_SIGINT; - if (sigaction(SIGQUIT, &newsa, &oldsaquit) < 0) + if (sigaction(SIGQUIT, &newsa, &oldsaquit) < 0) { goto done; + } doneflags |= F_SIGQUIT; - if (sigaddset(&newsa.sa_mask, SIGCHLD) < 0) + if (sigaddset(&newsa.sa_mask, SIGCHLD) < 0) { goto done; - if (sigprocmask(SIG_BLOCK, &newsa.sa_mask, &oldmask) < 0) + } + if (sigprocmask(SIG_BLOCK, &newsa.sa_mask, &oldmask) < 0) { goto done; + } doneflags |= F_SIGMASK; pid_t pid = fork(); - if (pid < 0) + if (pid < 0) { goto done; + } if (pid == 0) { sigaction(SIGINT, &oldsaint, NULL); sigaction(SIGQUIT, &oldsaquit, NULL); sigprocmask(SIG_SETMASK, &oldmask, NULL); - if (cwd && chdir(cwd) < 0) + if (cwd && chdir(cwd) < 0) { _exit(127); + } const char *argv[] = {"sh", "-c", cmd, NULL}; if (envp) { execve("/bin/sh", (char **)argv, (char **)envp); @@ -176,25 +191,32 @@ } _exit(127); } else { - if (waitpid(pid, &status, 0) < 0) + if (waitpid(pid, &status, 0) < 0) { goto done; + } doneflags |= F_WAITPID; } done: - if (doneflags & F_SIGINT) + if (doneflags & F_SIGINT) { sigaction(SIGINT, &oldsaint, NULL); - if (doneflags & F_SIGQUIT) + } + if (doneflags & F_SIGQUIT) { sigaction(SIGQUIT, &oldsaquit, NULL); - if (doneflags & F_SIGMASK) + } + if (doneflags & F_SIGMASK) { sigprocmask(SIG_SETMASK, &oldmask, NULL); + } /* no way to report other errors, use 127 (= shell termination) */ - if (!(doneflags & F_WAITPID)) + if (!(doneflags & F_WAITPID)) { return 127; - if (WIFEXITED(status)) + } + if (WIFEXITED(status)) { return WEXITSTATUS(status); - if (WIFSIGNALED(status)) + } + if (WIFSIGNALED(status)) { return -WTERMSIG(status); + } return 127; } diff --git a/mercurial/bdiff.c b/mercurial/bdiff.c --- a/mercurial/bdiff.c +++ b/mercurial/bdiff.c @@ -35,15 +35,19 @@ /* count the lines */ i = 1; /* extra line for sentinel */ - for (p = a; p < plast; p++) - if (*p == '\n') + for (p = a; p < plast; p++) { + if (*p == '\n') { i++; - if (p == plast) + } + } + if (p == plast) { i++; + } *lr = l = (struct bdiff_line *)calloc(i, sizeof(struct bdiff_line)); - if (!l) + if (!l) { return -1; + } /* build the line array and calculate hashes */ hash = 0; @@ -90,18 +94,21 @@ struct pos *h = NULL; /* build a hash table of the next highest power of 2 */ - while (buckets < bn + 1) + while (buckets < bn + 1) { buckets *= 2; + } /* try to allocate a large hash table to avoid collisions */ for (scale = 4; scale; scale /= 2) { h = (struct pos *)calloc(buckets, scale * sizeof(struct pos)); - if (h) + if (h) { break; + } } - if (!h) + if (!h) { return 0; + } buckets = buckets * scale - 1; @@ -115,9 +122,11 @@ for (i = 0; i < bn; i++) { /* find the equivalence class */ for (j = b[i].hash & buckets; h[j].pos != -1; - j = (j + 1) & buckets) - if (!cmp(b + i, b + h[j].pos)) + j = (j + 1) & buckets) { + if (!cmp(b + i, b + h[j].pos)) { break; + } + } /* add to the head of the equivalence class */ b[i].n = h[j].pos; @@ -133,15 +142,18 @@ for (i = 0; i < an; i++) { /* find the equivalence class */ for (j = a[i].hash & buckets; h[j].pos != -1; - j = (j + 1) & buckets) - if (!cmp(a + i, b + h[j].pos)) + j = (j + 1) & buckets) { + if (!cmp(a + i, b + h[j].pos)) { break; + } + } a[i].e = j; /* use equivalence class for quick compare */ - if (h[j].len <= t) + if (h[j].len <= t) { a[i].n = h[j].pos; /* point to head of match list */ - else + } else { a[i].n = -1; /* too popular */ + } } /* discard hash tables */ @@ -158,16 +170,18 @@ /* window our search on large regions to better bound worst-case performance. by choosing a window at the end, we reduce skipping overhead on the b chains. */ - if (a2 - a1 > 30000) + if (a2 - a1 > 30000) { a1 = a2 - 30000; + } half = (a1 + a2 - 1) / 2; bhalf = (b1 + b2 - 1) / 2; for (i = a1; i < a2; i++) { /* skip all lines in b after the current block */ - for (j = a[i].n; j >= b2; j = b[j].n) + for (j = a[i].n; j >= b2; j = b[j].n) { ; + } /* loop through all lines match a[i] in b */ for (; j >= b1; j = b[j].n) { @@ -179,8 +193,9 @@ break; } /* previous line mismatch? */ - if (a[i - k].e != b[j - k].e) + if (a[i - k].e != b[j - k].e) { break; + } } pos[j].pos = i; @@ -212,8 +227,9 @@ } /* expand match to include subsequent popular lines */ - while (mi + mk < a2 && mj + mk < b2 && a[mi + mk].e == b[mj + mk].e) + while (mi + mk < a2 && mj + mk < b2 && a[mi + mk].e == b[mj + mk].e) { mk++; + } *omi = mi; *omj = mj; @@ -230,18 +246,21 @@ while (1) { /* find the longest match in this chunk */ k = longest_match(a, b, pos, a1, a2, b1, b2, &i, &j); - if (!k) + if (!k) { return l; + } /* and recurse on the remaining chunks on either side */ l = recurse(a, b, pos, a1, i, b1, j, l); - if (!l) + if (!l) { return NULL; + } l->next = (struct bdiff_hunk *)malloc(sizeof(struct bdiff_hunk)); - if (!l->next) + if (!l->next) { return NULL; + } l = l->next; l->a1 = i; @@ -271,14 +290,16 @@ /* generate the matching block list */ curr = recurse(a, b, pos, 0, an, 0, bn, base); - if (!curr) + if (!curr) { return -1; + } /* sentinel end hunk */ curr->next = (struct bdiff_hunk *)malloc(sizeof(struct bdiff_hunk)); - if (!curr->next) + if (!curr->next) { return -1; + } curr = curr->next; curr->a1 = curr->a2 = an; curr->b1 = curr->b2 = bn; @@ -291,10 +312,11 @@ for (curr = base->next; curr; curr = curr->next) { struct bdiff_hunk *next = curr->next; - if (!next) + if (!next) { break; + } - if (curr->a2 == next->a1 || curr->b2 == next->b1) + if (curr->a2 == next->a1 || curr->b2 == next->b1) { while (curr->a2 < an && curr->b2 < bn && next->a1 < next->a2 && next->b1 < next->b2 && !cmp(a + curr->a2, b + curr->b2)) { @@ -303,10 +325,12 @@ curr->b2++; next->b1++; } + } } - for (curr = base->next; curr; curr = curr->next) + for (curr = base->next; curr; curr = curr->next) { count++; + } return count; } diff --git a/mercurial/cext/base85.c b/mercurial/cext/base85.c --- a/mercurial/cext/base85.c +++ b/mercurial/cext/base85.c @@ -24,8 +24,9 @@ unsigned i; memset(b85dec, 0, sizeof(b85dec)); - for (i = 0; i < sizeof(b85chars); i++) + for (i = 0; i < sizeof(b85chars); i++) { b85dec[(int)(b85chars[i])] = i + 1; + } } static PyObject *b85encode(PyObject *self, PyObject *args) @@ -37,19 +38,22 @@ unsigned int acc, val, ch; int pad = 0; - if (!PyArg_ParseTuple(args, PY23("s#|i", "y#|i"), &text, &len, &pad)) + if (!PyArg_ParseTuple(args, PY23("s#|i", "y#|i"), &text, &len, &pad)) { return NULL; + } - if (pad) + if (pad) { olen = ((len + 3) / 4 * 5) - 3; - else { + } else { olen = len % 4; - if (olen) + if (olen) { olen++; + } olen += len / 4 * 5; } - if (!(out = PyBytes_FromStringAndSize(NULL, olen + 3))) + if (!(out = PyBytes_FromStringAndSize(NULL, olen + 3))) { return NULL; + } dst = PyBytes_AsString(out); @@ -58,8 +62,9 @@ for (i = 24; i >= 0; i -= 8) { ch = *text++; acc |= ch << i; - if (--len == 0) + if (--len == 0) { break; + } } for (i = 4; i >= 0; i--) { val = acc % 85; @@ -69,8 +74,9 @@ dst += 5; } - if (!pad) + if (!pad) { _PyBytes_Resize(&out, olen); + } return out; } @@ -84,15 +90,18 @@ int c; unsigned int acc; - if (!PyArg_ParseTuple(args, PY23("s#", "y#"), &text, &len)) + if (!PyArg_ParseTuple(args, PY23("s#", "y#"), &text, &len)) { return NULL; + } olen = len / 5 * 4; i = len % 5; - if (i) + if (i) { olen += i - 1; - if (!(out = PyBytes_FromStringAndSize(NULL, olen))) + } + if (!(out = PyBytes_FromStringAndSize(NULL, olen))) { return NULL; + } dst = PyBytes_AsString(out); @@ -100,8 +109,9 @@ while (i < len) { acc = 0; cap = len - i - 1; - if (cap > 4) + if (cap > 4) { cap = 4; + } for (j = 0; j < cap; i++, j++) { c = b85dec[(int)*text++] - 1; if (c < 0) { @@ -136,10 +146,12 @@ cap = olen < 4 ? olen : 4; olen -= cap; - for (j = 0; j < 4 - cap; j++) + for (j = 0; j < 4 - cap; j++) { acc *= 85; - if (cap && cap < 4) + } + if (cap && cap < 4) { acc += 0xffffff >> (cap - 1) * 8; + } for (j = 0; j < cap; j++) { acc = (acc << 8) | (acc >> 24); *dst++ = acc; diff --git a/mercurial/cext/bdiff.c b/mercurial/cext/bdiff.c --- a/mercurial/cext/bdiff.c +++ b/mercurial/cext/bdiff.c @@ -29,22 +29,26 @@ l.next = NULL; - if (!PyArg_ParseTuple(args, "SS:bdiff", &sa, &sb)) + if (!PyArg_ParseTuple(args, "SS:bdiff", &sa, &sb)) { return NULL; + } an = bdiff_splitlines(PyBytes_AsString(sa), PyBytes_Size(sa), &a); bn = bdiff_splitlines(PyBytes_AsString(sb), PyBytes_Size(sb), &b); - if (!a || !b) + if (!a || !b) { goto nomem; + } count = bdiff_diff(a, an, b, bn, &l); - if (count < 0) + if (count < 0) { goto nomem; + } rl = PyList_New(count); - if (!rl) + if (!rl) { goto nomem; + } for (h = l.next; h; h = h->next) { m = Py_BuildValue("iiii", h->a1, h->a2, h->b1, h->b2); @@ -72,8 +76,10 @@ l.next = NULL; - if (!PyArg_ParseTuple(args, PY23("s*s*:bdiff", "y*y*:bdiff"), &ba, &bb)) + if (!PyArg_ParseTuple(args, PY23("s*s*:bdiff", "y*y*:bdiff"), &ba, + &bb)) { return NULL; + } if (!PyBuffer_IsContiguous(&ba, 'C') || ba.ndim > 1) { PyErr_SetString(PyExc_ValueError, "bdiff input not contiguous"); @@ -98,8 +104,9 @@ lmax = la > lb ? lb : la; for (ia = ba.buf, ib = bb.buf; li < lmax && *ia == *ib; ++li, ++ia, ++ib) { - if (*ia == '\n') + if (*ia == '\n') { lcommon = li + 1; + } } /* we can almost add: if (li == lmax) lcommon = li; */ @@ -119,8 +126,9 @@ /* calculate length of output */ la = lb = 0; for (h = l.next; h; h = h->next) { - if (h->a1 != la || h->b1 != lb) + if (h->a1 != la || h->b1 != lb) { len += 12 + bl[h->b1].l - bl[lb].l; + } la = h->a2; lb = h->b2; } @@ -129,8 +137,9 @@ result = PyBytes_FromStringAndSize(NULL, len); - if (!result) + if (!result) { goto cleanup; + } /* build binary patch */ rb = PyBytes_AsString(result); @@ -151,8 +160,9 @@ } cleanup: - if (_save) + if (_save) { PyEval_RestoreThread(_save); + } PyBuffer_Release(&ba); PyBuffer_Release(&bb); free(al); @@ -174,20 +184,23 @@ Py_ssize_t i, rlen, wlen = 0; char *w; - if (!PyArg_ParseTuple(args, "Sb:fixws", &s, &allws)) + if (!PyArg_ParseTuple(args, "Sb:fixws", &s, &allws)) { return NULL; + } r = PyBytes_AsString(s); rlen = PyBytes_Size(s); w = (char *)PyMem_Malloc(rlen ? rlen : 1); - if (!w) + if (!w) { goto nomem; + } for (i = 0; i != rlen; i++) { c = r[i]; if (c == ' ' || c == '\t' || c == '\r') { - if (!allws && (wlen == 0 || w[wlen - 1] != ' ')) + if (!allws && (wlen == 0 || w[wlen - 1] != ' ')) { w[wlen++] = ' '; + } } else if (c == '\n' && !allws && wlen > 0 && w[wlen - 1] == ' ') { w[wlen - 1] = '\n'; @@ -207,8 +220,9 @@ const char *source, Py_ssize_t len) { PyObject *sliced = PyBytes_FromStringAndSize(source, len); - if (sliced == NULL) + if (sliced == NULL) { return false; + } PyList_SET_ITEM(list, destidx, sliced); return true; } @@ -232,19 +246,22 @@ ++nelts; } } - if ((result = PyList_New(nelts + 1)) == NULL) + if ((result = PyList_New(nelts + 1)) == NULL) { goto abort; + } nelts = 0; for (i = 0; i < size - 1; ++i) { if (text[i] == '\n') { if (!sliceintolist(result, nelts++, text + start, - i - start + 1)) + i - start + 1)) { goto abort; + } start = i + 1; } } - if (!sliceintolist(result, nelts++, text + start, size - start)) + if (!sliceintolist(result, nelts++, text + start, size - start)) { goto abort; + } return result; abort: Py_XDECREF(result); @@ -257,8 +274,9 @@ PyObject *rl = (PyObject *)priv; PyObject *m = Py_BuildValue("LLLL", a1, a2, b1, b2); int r; - if (!m) + if (!m) { return -1; + } r = PyList_Append(rl, m); Py_DECREF(m); return r; @@ -282,15 +300,17 @@ }; if (!PyArg_ParseTuple(args, PY23("s#s#", "y#y#"), &a.ptr, &la, &b.ptr, - &lb)) + &lb)) { return NULL; + } a.size = la; b.size = lb; rl = PyList_New(0); - if (!rl) + if (!rl) { return PyErr_NoMemory(); + } ecb.priv = rl; diff --git a/mercurial/cext/charencode.c b/mercurial/cext/charencode.c --- a/mercurial/cext/charencode.c +++ b/mercurial/cext/charencode.c @@ -114,8 +114,9 @@ ret = PyBytes_FromStringAndSize(NULL, len / 2); - if (!ret) + if (!ret) { return NULL; + } d = PyBytes_AsString(ret); @@ -133,21 +134,24 @@ const char *buf; Py_ssize_t i, len; if (!PyArg_ParseTuple(args, PY23("s#:isasciistr", "y#:isasciistr"), - &buf, &len)) + &buf, &len)) { return NULL; + } i = 0; /* char array in PyStringObject should be at least 4-byte aligned */ if (((uintptr_t)buf & 3) == 0) { const uint32_t *p = (const uint32_t *)buf; for (; i < len / 4; i++) { - if (p[i] & 0x80808080U) + if (p[i] & 0x80808080U) { Py_RETURN_FALSE; + } } i *= 4; } for (; i < len; i++) { - if (buf[i] & 0x80) + if (buf[i] & 0x80) { Py_RETURN_FALSE; + } } Py_RETURN_TRUE; } @@ -164,8 +168,9 @@ len = PyBytes_GET_SIZE(str_obj); newobj = PyBytes_FromStringAndSize(NULL, len); - if (!newobj) + if (!newobj) { goto quit; + } newstr = PyBytes_AS_STRING(newobj); @@ -197,16 +202,18 @@ PyObject *asciilower(PyObject *self, PyObject *args) { PyObject *str_obj; - if (!PyArg_ParseTuple(args, "O!:asciilower", &PyBytes_Type, &str_obj)) + if (!PyArg_ParseTuple(args, "O!:asciilower", &PyBytes_Type, &str_obj)) { return NULL; + } return _asciitransform(str_obj, lowertable, NULL); } PyObject *asciiupper(PyObject *self, PyObject *args) { PyObject *str_obj; - if (!PyArg_ParseTuple(args, "O!:asciiupper", &PyBytes_Type, &str_obj)) + if (!PyArg_ParseTuple(args, "O!:asciiupper", &PyBytes_Type, &str_obj)) { return NULL; + } return _asciitransform(str_obj, uppertable, NULL); } @@ -222,8 +229,9 @@ if (!PyArg_ParseTuple(args, "O!O!O!:make_file_foldmap", &PyDict_Type, &dmap, &PyInt_Type, &spec_obj, &PyFunction_Type, - &normcase_fallback)) + &normcase_fallback)) { goto quit; + } spec = (int)PyInt_AS_LONG(spec_obj); switch (spec) { @@ -244,8 +252,9 @@ /* Add some more entries to deal with additions outside this function. */ file_foldmap = _dict_new_presized((PyDict_Size(dmap) / 10) * 11); - if (file_foldmap == NULL) + if (file_foldmap == NULL) { goto quit; + } while (PyDict_Next(dmap, &pos, &k, &v)) { if (!dirstate_tuple_check(v)) { @@ -265,8 +274,9 @@ normcase_fallback, k, NULL); } - if (normed == NULL) + if (normed == NULL) { goto quit; + } if (PyDict_SetItem(file_foldmap, normed, k) == -1) { Py_DECREF(normed); goto quit; @@ -377,22 +387,25 @@ Py_ssize_t origlen, esclen; int paranoid; if (!PyArg_ParseTuple(args, "O!i:jsonescapeu8fast", &PyBytes_Type, - &origstr, ¶noid)) + &origstr, ¶noid)) { return NULL; + } origbuf = PyBytes_AS_STRING(origstr); origlen = PyBytes_GET_SIZE(origstr); esclen = jsonescapelen(origbuf, origlen, paranoid); - if (esclen < 0) + if (esclen < 0) { return NULL; /* unsupported char found or overflow */ + } if (origlen == esclen) { Py_INCREF(origstr); return origstr; } escstr = PyBytes_FromStringAndSize(NULL, esclen); - if (!escstr) + if (!escstr) { return NULL; + } encodejsonescape(PyBytes_AS_STRING(escstr), esclen, origbuf, origlen, paranoid); diff --git a/mercurial/cext/mpatch.c b/mercurial/cext/mpatch.c --- a/mercurial/cext/mpatch.c +++ b/mercurial/cext/mpatch.c @@ -55,13 +55,16 @@ int r; PyObject *tmp = PyList_GetItem((PyObject *)bins, pos); - if (!tmp) + if (!tmp) { return NULL; - if (PyObject_GetBuffer(tmp, &buffer, PyBUF_CONTIG_RO)) + } + if (PyObject_GetBuffer(tmp, &buffer, PyBUF_CONTIG_RO)) { return NULL; + } if ((r = mpatch_decode(buffer.buf, buffer.len, &res)) < 0) { - if (!PyErr_Occurred()) + if (!PyErr_Occurred()) { setpyerr(r); + } res = NULL; } @@ -78,8 +81,9 @@ char *out; Py_ssize_t len, outlen; - if (!PyArg_ParseTuple(args, "OO:mpatch", &text, &bins)) + if (!PyArg_ParseTuple(args, "OO:mpatch", &text, &bins)) { return NULL; + } len = PyList_Size(bins); if (!len) { @@ -94,8 +98,9 @@ patch = mpatch_fold(bins, cpygetitem, 0, len); if (!patch) { /* error already set or memory error */ - if (!PyErr_Occurred()) + if (!PyErr_Occurred()) { PyErr_NoMemory(); + } result = NULL; goto cleanup; } @@ -126,8 +131,9 @@ cleanup: mpatch_lfree(patch); PyBuffer_Release(&buffer); - if (!result && !PyErr_Occurred()) + if (!result && !PyErr_Occurred()) { setpyerr(r); + } return result; } @@ -138,15 +144,18 @@ Py_ssize_t patchlen; char *bin; - if (!PyArg_ParseTuple(args, PY23("ls#", "ly#"), &orig, &bin, &patchlen)) + if (!PyArg_ParseTuple(args, PY23("ls#", "ly#"), &orig, &bin, + &patchlen)) { return NULL; + } while (pos >= 0 && pos < patchlen) { start = getbe32(bin + pos); end = getbe32(bin + pos + 4); len = getbe32(bin + pos + 8); - if (start > end) + if (start > end) { break; /* sanity check */ + } pos += 12 + len; outlen += start - last; last = end; @@ -154,9 +163,10 @@ } if (pos != patchlen) { - if (!PyErr_Occurred()) + if (!PyErr_Occurred()) { PyErr_SetString(mpatch_Error, "patch cannot be decoded"); + } return NULL; } diff --git a/mercurial/cext/parsers.c b/mercurial/cext/parsers.c --- a/mercurial/cext/parsers.c +++ b/mercurial/cext/parsers.c @@ -32,8 +32,9 @@ { Py_ssize_t expected_size; - if (!PyArg_ParseTuple(args, "n:make_presized_dict", &expected_size)) + if (!PyArg_ParseTuple(args, "n:make_presized_dict", &expected_size)) { return NULL; + } return _dict_new_presized(expected_size); } @@ -43,8 +44,9 @@ { dirstateTupleObject *t = PyObject_New(dirstateTupleObject, &dirstateTupleType); - if (!t) + if (!t) { return NULL; + } t->state = state; t->mode = mode; t->size = size; @@ -60,12 +62,14 @@ dirstateTupleObject *t; char state; int size, mode, mtime; - if (!PyArg_ParseTuple(args, "ciii", &state, &mode, &size, &mtime)) + if (!PyArg_ParseTuple(args, "ciii", &state, &mode, &size, &mtime)) { return NULL; + } t = (dirstateTupleObject *)subtype->tp_alloc(subtype, 1); - if (!t) + if (!t) { return NULL; + } t->state = state; t->mode = mode; t->size = size; @@ -165,8 +169,9 @@ if (!PyArg_ParseTuple( args, PY23("O!O!s#:parse_dirstate", "O!O!y#:parse_dirstate"), - &PyDict_Type, &dmap, &PyDict_Type, &cmap, &str, &readlen)) + &PyDict_Type, &dmap, &PyDict_Type, &cmap, &str, &readlen)) { goto quit; + } len = readlen; @@ -178,8 +183,9 @@ } parents = Py_BuildValue(PY23("s#s#", "y#y#"), str, 20, str + 20, 20); - if (!parents) + if (!parents) { goto quit; + } /* read filenames */ while (pos >= 40 && pos < len) { @@ -212,13 +218,16 @@ cpos + 1, flen - (cpos - cur) - 1); if (!fname || !cname || PyDict_SetItem(cmap, fname, cname) == -1 || - PyDict_SetItem(dmap, fname, entry) == -1) + PyDict_SetItem(dmap, fname, entry) == -1) { goto quit; + } Py_DECREF(cname); } else { fname = PyBytes_FromStringAndSize(cur, flen); - if (!fname || PyDict_SetItem(dmap, fname, entry) == -1) + if (!fname || + PyDict_SetItem(dmap, fname, entry) == -1) { goto quit; + } } Py_DECREF(fname); Py_DECREF(entry); @@ -245,16 +254,20 @@ PyObject *nonnset = NULL, *otherpset = NULL, *result = NULL; Py_ssize_t pos; - if (!PyArg_ParseTuple(args, "O!:nonnormalentries", &PyDict_Type, &dmap)) + if (!PyArg_ParseTuple(args, "O!:nonnormalentries", &PyDict_Type, + &dmap)) { goto bail; + } nonnset = PySet_New(NULL); - if (nonnset == NULL) + if (nonnset == NULL) { goto bail; + } otherpset = PySet_New(NULL); - if (otherpset == NULL) + if (otherpset == NULL) { goto bail; + } pos = 0; while (PyDict_Next(dmap, &pos, &fname, &v)) { @@ -272,15 +285,18 @@ } } - if (t->state == 'n' && t->mtime != -1) + if (t->state == 'n' && t->mtime != -1) { continue; - if (PySet_Add(nonnset, fname) == -1) + } + if (PySet_Add(nonnset, fname) == -1) { goto bail; + } } result = Py_BuildValue("(OO)", nonnset, otherpset); - if (result == NULL) + if (result == NULL) { goto bail; + } Py_DECREF(nonnset); Py_DECREF(otherpset); return result; @@ -304,8 +320,10 @@ int now; if (!PyArg_ParseTuple(args, "O!O!O!i:pack_dirstate", &PyDict_Type, &map, - &PyDict_Type, ©map, &PyTuple_Type, &pl, &now)) + &PyDict_Type, ©map, &PyTuple_Type, &pl, + &now)) { return NULL; + } if (PyTuple_Size(pl) != 2) { PyErr_SetString(PyExc_TypeError, "expected 2-element tuple"); @@ -332,8 +350,9 @@ } packobj = PyBytes_FromStringAndSize(NULL, nbytes); - if (packobj == NULL) + if (packobj == NULL) { goto bail; + } p = PyBytes_AS_STRING(packobj); @@ -377,10 +396,12 @@ mtime = -1; mtime_unset = (PyObject *)make_dirstate_tuple( state, mode, size, mtime); - if (!mtime_unset) + if (!mtime_unset) { goto bail; - if (PyDict_SetItem(map, k, mtime_unset) == -1) + } + if (PyDict_SetItem(map, k, mtime_unset) == -1) { goto bail; + } Py_DECREF(mtime_unset); mtime_unset = NULL; } @@ -664,8 +685,9 @@ manifest_module_init(mod); revlog_module_init(mod); - if (PyType_Ready(&dirstateTupleType) < 0) + if (PyType_Ready(&dirstateTupleType) < 0) { return; + } Py_INCREF(&dirstateTupleType); PyModule_AddObject(mod, "dirstatetuple", (PyObject *)&dirstateTupleType); @@ -675,12 +697,14 @@ { PyObject *sys = PyImport_ImportModule("sys"), *ver; long hexversion; - if (!sys) + if (!sys) { return -1; + } ver = PyObject_GetAttrString(sys, "hexversion"); Py_DECREF(sys); - if (!ver) + if (!ver) { return -1; + } hexversion = PyInt_AsLong(ver); Py_DECREF(ver); /* sys.hexversion is a 32-bit number by default, so the -1 case @@ -720,8 +744,9 @@ { PyObject *mod; - if (check_python_version() == -1) + if (check_python_version() == -1) { return; + } mod = Py_InitModule3("parsers", methods, parsers_doc); module_init(mod); } diff --git a/mercurial/cext/pathencode.c b/mercurial/cext/pathencode.c --- a/mercurial/cext/pathencode.c +++ b/mercurial/cext/pathencode.c @@ -126,8 +126,9 @@ if (src[i] == 'g') { state = DHGDI; charcopy(dest, &destlen, destsize, src[i++]); - } else + } else { state = DDEFAULT; + } break; case DHGDI: if (src[i] == '/') { @@ -137,8 +138,9 @@ state = DDEFAULT; break; case DDEFAULT: - if (src[i] == '.') + if (src[i] == '.') { state = DDOT; + } charcopy(dest, &destlen, destsize, src[i++]); break; } @@ -153,8 +155,9 @@ PyObject *pathobj, *newobj; char *path; - if (!PyArg_ParseTuple(args, "O:encodedir", &pathobj)) + if (!PyArg_ParseTuple(args, "O:encodedir", &pathobj)) { return NULL; + } if (PyBytes_AsStringAndSize(pathobj, &path, &len) == -1) { PyErr_SetString(PyExc_TypeError, "expected a string"); @@ -235,15 +238,17 @@ if (src[i] == 'u') { state = AU; charcopy(dest, &destlen, destsize, src[i++]); - } else + } else { state = DEFAULT; + } break; case AU: if (src[i] == 'x') { state = THIRD; i++; - } else + } else { state = DEFAULT; + } break; case THIRD: state = DEFAULT; @@ -262,8 +267,9 @@ if (src[i] == 'o') { state = CO; charcopy(dest, &destlen, destsize, src[i++]); - } else + } else { state = DEFAULT; + } break; case CO: if (src[i] == 'm') { @@ -272,8 +278,9 @@ } else if (src[i] == 'n') { state = THIRD; i++; - } else + } else { state = DEFAULT; + } break; case COMLPT: switch (src[i]) { @@ -314,43 +321,49 @@ if (src[i] == 'p') { state = LP; charcopy(dest, &destlen, destsize, src[i++]); - } else + } else { state = DEFAULT; + } break; case LP: if (src[i] == 't') { state = COMLPT; i++; - } else + } else { state = DEFAULT; + } break; case N: if (src[i] == 'u') { state = NU; charcopy(dest, &destlen, destsize, src[i++]); - } else + } else { state = DEFAULT; + } break; case NU: if (src[i] == 'l') { state = THIRD; i++; - } else + } else { state = DEFAULT; + } break; case P: if (src[i] == 'r') { state = PR; charcopy(dest, &destlen, destsize, src[i++]); - } else + } else { state = DEFAULT; + } break; case PR: if (src[i] == 'n') { state = THIRD; i++; - } else + } else { state = DEFAULT; + } break; case LDOT: switch (src[i]) { @@ -397,18 +410,21 @@ if (src[i] == 'g') { state = HGDI; charcopy(dest, &destlen, destsize, src[i++]); - } else + } else { state = DEFAULT; + } break; case HGDI: if (src[i] == '/') { state = START; - if (encodedir) + if (encodedir) { memcopy(dest, &destlen, destsize, ".hg", 3); + } charcopy(dest, &destlen, destsize, src[i++]); - } else + } else { state = DEFAULT; + } break; case SPACE: switch (src[i]) { @@ -427,8 +443,9 @@ case DEFAULT: while (inset(onebyte, src[i])) { charcopy(dest, &destlen, destsize, src[i++]); - if (i == len) + if (i == len) { goto done; + } } switch (src[i]) { case '.': @@ -456,9 +473,10 @@ charcopy(dest, &destlen, destsize, '_'); charcopy(dest, &destlen, destsize, c == '_' ? '_' : c + 32); - } else + } else { escape3(dest, &destlen, destsize, src[i++]); + } break; } break; @@ -498,12 +516,13 @@ Py_ssize_t i, destlen = 0; for (i = 0; i < len; i++) { - if (inset(onebyte, src[i])) + if (inset(onebyte, src[i])) { charcopy(dest, &destlen, destsize, src[i]); - else if (inset(lower, src[i])) + } else if (inset(lower, src[i])) { charcopy(dest, &destlen, destsize, src[i] + 32); - else + } else { escape3(dest, &destlen, destsize, src[i]); + } } return destlen; @@ -516,13 +535,15 @@ PyObject *ret; if (!PyArg_ParseTuple(args, PY23("s#:lowerencode", "y#:lowerencode"), - &path, &len)) + &path, &len)) { return NULL; + } newlen = _lowerencode(NULL, 0, path, len); ret = PyBytes_FromStringAndSize(NULL, newlen); - if (ret) + if (ret) { _lowerencode(PyBytes_AS_STRING(ret), newlen, path, len); + } return ret; } @@ -551,8 +572,9 @@ Py_ssize_t destsize, destlen = 0, slop, used; while (lastslash >= 0 && src[lastslash] != '/') { - if (src[lastslash] == '.' && lastdot == -1) + if (src[lastslash] == '.' && lastdot == -1) { lastdot = lastslash; + } lastslash--; } @@ -570,12 +592,14 @@ /* If src contains a suffix, we will append it to the end of the new string, so make room. */ destsize = 120; - if (lastdot >= 0) + if (lastdot >= 0) { destsize += len - lastdot - 1; + } ret = PyBytes_FromStringAndSize(NULL, destsize); - if (ret == NULL) + if (ret == NULL) { return NULL; + } dest = PyBytes_AS_STRING(ret); memcopy(dest, &destlen, destsize, "dh/", 3); @@ -587,30 +611,36 @@ char d = dest[destlen - 1]; /* After truncation, a directory name may end in a space or dot, which are unportable. */ - if (d == '.' || d == ' ') + if (d == '.' || d == ' ') { dest[destlen - 1] = '_'; - /* The + 3 is to account for "dh/" in the beginning */ - if (destlen > maxshortdirslen + 3) + /* The + 3 is to account for "dh/" in the + * beginning */ + } + if (destlen > maxshortdirslen + 3) { break; + } charcopy(dest, &destlen, destsize, src[i]); p = -1; - } else if (p < dirprefixlen) + } else if (p < dirprefixlen) { charcopy(dest, &destlen, destsize, src[i]); + } } /* Rewind to just before the last slash copied. */ - if (destlen > maxshortdirslen + 3) + if (destlen > maxshortdirslen + 3) { do { destlen--; } while (destlen > 0 && dest[destlen] != '/'); + } if (destlen > 3) { if (lastslash > 0) { char d = dest[destlen - 1]; /* The last directory component may be truncated, so make it safe. */ - if (d == '.' || d == ' ') + if (d == '.' || d == ' ') { dest[destlen - 1] = '_'; + } } charcopy(dest, &destlen, destsize, '/'); @@ -620,27 +650,32 @@ depends on the number of bytes left after accounting for hash and suffix. */ used = destlen + 40; - if (lastdot >= 0) + if (lastdot >= 0) { used += len - lastdot - 1; + } slop = maxstorepathlen - used; if (slop > 0) { Py_ssize_t basenamelen = lastslash >= 0 ? len - lastslash - 2 : len - 1; - if (basenamelen > slop) + if (basenamelen > slop) { basenamelen = slop; - if (basenamelen > 0) + } + if (basenamelen > 0) { memcopy(dest, &destlen, destsize, &src[lastslash + 1], basenamelen); + } } /* Add hash and suffix. */ - for (i = 0; i < 20; i++) + for (i = 0; i < 20; i++) { hexencode(dest, &destlen, destsize, sha[i]); + } - if (lastdot >= 0) + if (lastdot >= 0) { memcopy(dest, &destlen, destsize, &src[lastdot], len - lastdot - 1); + } assert(PyBytes_Check(ret)); Py_SIZE(ret) = destlen; @@ -677,13 +712,15 @@ shaobj = PyObject_CallFunction(shafunc, PY23("s#", "y#"), str, len); - if (shaobj == NULL) + if (shaobj == NULL) { return -1; + } hashobj = PyObject_CallMethod(shaobj, "digest", ""); Py_DECREF(shaobj); - if (hashobj == NULL) + if (hashobj == NULL) { return -1; + } if (!PyBytes_Check(hashobj) || PyBytes_GET_SIZE(hashobj) != 20) { PyErr_SetString(PyExc_TypeError, @@ -714,8 +751,9 @@ } dirlen = _encodedir(dired, baselen, src, len); - if (sha1hash(sha, dired, dirlen - 1) == -1) + if (sha1hash(sha, dired, dirlen - 1) == -1) { return NULL; + } lowerlen = _lowerencode(lowered, baselen, dired + 5, dirlen - 5); auxlen = auxencode(auxed, baselen, lowered, lowerlen); return hashmangle(auxed, auxlen, sha); @@ -727,18 +765,20 @@ PyObject *pathobj, *newobj; char *path; - if (!PyArg_ParseTuple(args, "O:pathencode", &pathobj)) + if (!PyArg_ParseTuple(args, "O:pathencode", &pathobj)) { return NULL; + } if (PyBytes_AsStringAndSize(pathobj, &path, &len) == -1) { PyErr_SetString(PyExc_TypeError, "expected a string"); return NULL; } - if (len > maxstorepathlen) + if (len > maxstorepathlen) { newlen = maxstorepathlen + 2; - else + } else { newlen = len ? basicencode(NULL, 0, path, len + 1) : 1; + } if (newlen <= maxstorepathlen + 1) { if (newlen == len + 1) { @@ -754,8 +794,9 @@ basicencode(PyBytes_AS_STRING(newobj), newlen, path, len + 1); } - } else + } else { newobj = hashencode(path, len + 1); + } return newobj; } diff --git a/mercurial/mpatch.c b/mercurial/mpatch.c --- a/mercurial/mpatch.c +++ b/mercurial/mpatch.c @@ -41,8 +41,9 @@ { struct mpatch_flist *a = NULL; - if (size < 1) + if (size < 1) { size = 1; + } a = (struct mpatch_flist *)malloc(sizeof(struct mpatch_flist)); if (a) { @@ -110,10 +111,12 @@ while (s != src->tail) { int soffset = s->start; - if (!safeadd(offset, &soffset)) + if (!safeadd(offset, &soffset)) { break; /* add would overflow, oh well */ - if (soffset >= cut) + } + if (soffset >= cut) { break; /* we've gone far enough */ + } postend = offset; if (!safeadd(s->start, &postend) || @@ -139,11 +142,13 @@ if (!safesub(offset, &c)) { break; } - if (s->end < c) + if (s->end < c) { c = s->end; + } l = cut - offset - s->start; - if (s->len < l) + if (s->len < l) { l = s->len; + } offset += s->start + l - c; @@ -176,8 +181,9 @@ if (!safeadd(offset, &cmpcut)) { break; } - if (cmpcut >= cut) + if (cmpcut >= cut) { break; + } postend = offset; if (!safeadd(s->start, &postend)) { @@ -205,11 +211,13 @@ if (!safesub(offset, &c)) { break; } - if (s->end < c) + if (s->end < c) { c = s->end; + } l = cut - offset - s->start; - if (s->len < l) + if (s->len < l) { l = s->len; + } offset += s->start + l - c; s->start = c; @@ -233,8 +241,9 @@ struct mpatch_frag *bh, *ct; int offset = 0, post; - if (a && b) + if (a && b) { c = lalloc((lsize(a) + lsize(b)) * 2); + } if (c) { @@ -284,8 +293,9 @@ /* assume worst case size, we won't have many of these lists */ l = lalloc(len / 12 + 1); - if (!l) + if (!l) { return MPATCH_ERR_NO_MEM; + } lt = l->tail; @@ -295,8 +305,9 @@ lt->start = getbe32(bin + pos); lt->end = getbe32(bin + pos + 4); lt->len = getbe32(bin + pos + 8); - if (lt->start < 0 || lt->start > lt->end || lt->len < 0) + if (lt->start < 0 || lt->start > lt->end || lt->len < 0) { break; /* sanity check */ + } if (!safeadd(12, &pos)) { break; } diff --git a/rust/chg/src/sighandlers.c b/rust/chg/src/sighandlers.c --- a/rust/chg/src/sighandlers.c +++ b/rust/chg/src/sighandlers.c @@ -33,28 +33,36 @@ { sigset_t unblockset, oldset; struct sigaction sa, oldsa; - if (sigemptyset(&unblockset) < 0) + if (sigemptyset(&unblockset) < 0) { return; - if (sigaddset(&unblockset, sig) < 0) + } + if (sigaddset(&unblockset, sig) < 0) { return; + } memset(&sa, 0, sizeof(sa)); sa.sa_handler = SIG_DFL; sa.sa_flags = SA_RESTART; - if (sigemptyset(&sa.sa_mask) < 0) + if (sigemptyset(&sa.sa_mask) < 0) { return; + } forwardsignal(sig); - if (raise(sig) < 0) /* resend to self */ + if (raise(sig) < 0) { /* resend to self */ return; - if (sigaction(sig, &sa, &oldsa) < 0) + } + if (sigaction(sig, &sa, &oldsa) < 0) { return; - if (sigprocmask(SIG_UNBLOCK, &unblockset, &oldset) < 0) + } + if (sigprocmask(SIG_UNBLOCK, &unblockset, &oldset) < 0) { return; + } /* resent signal will be handled before sigprocmask() returns */ - if (sigprocmask(SIG_SETMASK, &oldset, NULL) < 0) + if (sigprocmask(SIG_SETMASK, &oldset, NULL) < 0) { return; - if (sigaction(sig, &oldsa, NULL) < 0) + } + if (sigaction(sig, &oldsa, NULL) < 0) { return; + } } /* @@ -81,37 +89,46 @@ * - SIGINT: usually generated by the terminal */ sa.sa_handler = forwardsignaltogroup; sa.sa_flags = SA_RESTART; - if (sigemptyset(&sa.sa_mask) < 0) + if (sigemptyset(&sa.sa_mask) < 0) { + return -1; + } + if (sigaction(SIGHUP, &sa, NULL) < 0) { return -1; - if (sigaction(SIGHUP, &sa, NULL) < 0) + } + if (sigaction(SIGINT, &sa, NULL) < 0) { return -1; - if (sigaction(SIGINT, &sa, NULL) < 0) - return -1; + } /* terminate frontend by double SIGTERM in case of server freeze */ sa.sa_handler = forwardsignal; sa.sa_flags |= SA_RESETHAND; - if (sigaction(SIGTERM, &sa, NULL) < 0) + if (sigaction(SIGTERM, &sa, NULL) < 0) { return -1; + } /* notify the worker about window resize events */ sa.sa_flags = SA_RESTART; - if (sigaction(SIGWINCH, &sa, NULL) < 0) + if (sigaction(SIGWINCH, &sa, NULL) < 0) { return -1; + } /* forward user-defined signals */ - if (sigaction(SIGUSR1, &sa, NULL) < 0) + if (sigaction(SIGUSR1, &sa, NULL) < 0) { return -1; - if (sigaction(SIGUSR2, &sa, NULL) < 0) + } + if (sigaction(SIGUSR2, &sa, NULL) < 0) { return -1; + } /* propagate job control requests to worker */ sa.sa_handler = forwardsignal; sa.sa_flags = SA_RESTART; - if (sigaction(SIGCONT, &sa, NULL) < 0) + if (sigaction(SIGCONT, &sa, NULL) < 0) { return -1; + } sa.sa_handler = handlestopsignal; sa.sa_flags = SA_RESTART; - if (sigaction(SIGTSTP, &sa, NULL) < 0) + if (sigaction(SIGTSTP, &sa, NULL) < 0) { return -1; + } return 0; } @@ -127,24 +144,31 @@ memset(&sa, 0, sizeof(sa)); sa.sa_handler = SIG_DFL; sa.sa_flags = SA_RESTART; - if (sigemptyset(&sa.sa_mask) < 0) + if (sigemptyset(&sa.sa_mask) < 0) { return -1; + } - if (sigaction(SIGHUP, &sa, NULL) < 0) + if (sigaction(SIGHUP, &sa, NULL) < 0) { return -1; - if (sigaction(SIGTERM, &sa, NULL) < 0) + } + if (sigaction(SIGTERM, &sa, NULL) < 0) { return -1; - if (sigaction(SIGWINCH, &sa, NULL) < 0) + } + if (sigaction(SIGWINCH, &sa, NULL) < 0) { return -1; - if (sigaction(SIGCONT, &sa, NULL) < 0) + } + if (sigaction(SIGCONT, &sa, NULL) < 0) { return -1; - if (sigaction(SIGTSTP, &sa, NULL) < 0) + } + if (sigaction(SIGTSTP, &sa, NULL) < 0) { return -1; + } /* ignore Ctrl+C while shutting down to make pager exits cleanly */ sa.sa_handler = SIG_IGN; - if (sigaction(SIGINT, &sa, NULL) < 0) + if (sigaction(SIGINT, &sa, NULL) < 0) { return -1; + } peerpid = 0; return 0;