diff -c -r -N Ice-3.3.0-orig/cpp/src/Slice/Util.cpp Ice-3.3.0/cpp/src/Slice/Util.cpp *** Ice-3.3.0-orig/cpp/src/Slice/Util.cpp Tue Jun 24 10:28:04 2008 --- Ice-3.3.0/cpp/src/Slice/Util.cpp Tue Jun 24 10:44:19 2008 *************** *** 49,57 **** ++pos; } } ! if(result[result.size() - 1] == '/') // Remove trailing '/' { ! result.erase(result.size() - 1); } return result; } --- 49,65 ---- ++pos; } } ! ! if(result.size() > 1) // Remove trailing "/" or "/." { ! if(result[result.size() - 1] == '/') ! { ! result.erase(result.size() - 1); ! } ! else if(result[result.size() - 2] == '/' && result[result.size() - 1] == '.') ! { ! result.erase(result.size() - (result.size() == 2 ? 1 : 2)); ! } } return result; } *************** *** 159,164 **** --- 167,181 ---- } } + if(result == file) + { + // + // Don't return a full path if we couldn't reduce the given path, instead + // return the normalized given path. + // + result = normalizePath(orig); + } + string::size_type pos; if((pos = result.rfind('.')) != string::npos) {