Fix problem with previous commit and remove strtol call

This commit is contained in:
Francesco Abbate 2021-03-18 10:00:03 +01:00
parent 51e7c9493f
commit 43e08b0f8e
1 changed files with 8 additions and 6 deletions

View File

@ -57,11 +57,13 @@ static int xrdb_popen (int *pid_ptr) {
static int xrdb_try_dpi_match(const char *line, int len) { static int xrdb_try_dpi_match(const char *line, int len) {
if (len >= 8 && strncmp(line, "Xft.dpi:", 8) == 0 && len - 8 + 1 <= 64) { if (len >= 8 && strncmp(line, "Xft.dpi:", 8) == 0) {
char buf[64]; for (line += 8; *line && (*line == '\t' || *line == ' '); line++) { }
memcpy(buf, line + 8, len - 8); int dpi = 0;
buf[len - 8] = 0; for ( ; *line >= '0' && *line <= '9'; line++) {
return strtol(buf, NULL, 10); dpi = dpi * 10 + ((int) (*line) - (int) '0');
}
return dpi;
} }
return -1; return -1;
} }
@ -104,7 +106,7 @@ static int xrdb_parse_for_dpi(int read_fd) {
/* Line is too long for the buffer: skip. */ /* Line is too long for the buffer: skip. */
buf_remaining = 0; buf_remaining = 0;
} else { } else {
memmove(buf, line_start, rem); memmove(buf, line_start, buf_remaining);
} }
break; break;
} }