From 3fd62c76c261e10658a1ba365710ee26b6fb34fe Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 14 Mar 2009 16:31:57 +0000 Subject: (convert_Path_to_windows32): Fix last change. Fixes Savannah bug #25412. --- w32/pathstuff.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'w32') diff --git a/w32/pathstuff.c b/w32/pathstuff.c index 6f712d1..bb790f0 100644 --- a/w32/pathstuff.c +++ b/w32/pathstuff.c @@ -1,6 +1,6 @@ /* Path conversion for Windows pathnames. Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, -2007 Free Software Foundation, Inc. +2007, 2009 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -49,6 +49,9 @@ convert_Path_to_windows32(char *Path, char to_delim) char *p; /* points to element of old Path */ /* is this a multi-element Path ? */ + /* FIXME: Perhaps use ":;\"" in strpbrk to convert all quotes to + delimiters as well, as a way to handle quoted directories in + PATH? */ for (p = Path, etok = strpbrk(p, ":;"); etok; etok = strpbrk(p, ":;")) @@ -74,8 +77,11 @@ convert_Path_to_windows32(char *Path, char to_delim) for (p++; *p && *p != '"'; p++) /* skip quoted part */ ; etok = strpbrk(p, ":;"); /* find next delimiter */ - *etok = to_delim; - p = ++etok; + if (etok) { + *etok = to_delim; + p = ++etok; + } else + p += strlen(p); } else { /* found another one, no drive letter */ *etok = to_delim; -- cgit v1.2.3