[PATCH] Fix modification of const string
authorJens Axboe <jens.axboe@oracle.com>
Fri, 27 Oct 2006 13:00:16 +0000 (15:00 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Fri, 27 Oct 2006 13:00:16 +0000 (15:00 +0200)
Copy 'ptr' to local storage first.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
parse.c

diff --git a/parse.c b/parse.c
index e001eef4224f554ec3605c9ed9353ceb19af1395..399aae49aaf54448eae0636fd4d7e8311a09b5a2 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -93,7 +93,7 @@ void strip_blank_end(char *p)
        *(s + 1) = '\0';
 }
 
        *(s + 1) = '\0';
 }
 
-static int check_range_bytes(char *str, unsigned long *val)
+static int check_range_bytes(const char *str, unsigned long *val)
 {
        char suffix;
 
 {
        char suffix;
 
@@ -175,9 +175,12 @@ static int handle_option(struct fio_option *o, const char *ptr, void *data)
                *cp = strdup(ptr);
                break;
        case FIO_OPT_RANGE: {
                *cp = strdup(ptr);
                break;
        case FIO_OPT_RANGE: {
+               char tmp[128];
                char *p1, *p2;
 
                char *p1, *p2;
 
-               p1 = strchr(ptr, '-');
+               strcpy(tmp, ptr);
+
+               p1 = strchr(tmp, '-');
                if (!p1) {
                        ret = 1;
                        break;
                if (!p1) {
                        ret = 1;
                        break;
@@ -185,7 +188,7 @@ static int handle_option(struct fio_option *o, const char *ptr, void *data)
 
                p2 = p1 + 1;
                *p1 = '\0';
 
                p2 = p1 + 1;
                *p1 = '\0';
-               p1 = ptr;
+               p1 = tmp;
 
                ret = 1;
                if (!check_range_bytes(p1, &ul1) && !check_range_bytes(p2, &ul2)) {
 
                ret = 1;
                if (!check_range_bytes(p1, &ul1) && !check_range_bytes(p2, &ul2)) {