mirror of https://github.com/swig/swig
Fix regression introduced in swig-2.0.2 where filenames with spaces were not found when used with %include and %import
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12546 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
7709e0303a
commit
f5feb6cc24
|
@ -5,6 +5,10 @@ See the RELEASENOTES file for a summary of changes in each release.
|
|||
Version 2.0.3 (in progress)
|
||||
===========================
|
||||
|
||||
2011-03-17: wsfulton
|
||||
Fix regression introduced in swig-2.0.2 where filenames with spaces were not found
|
||||
when used with %include and %import. Reported by Shane Liesegang.
|
||||
|
||||
2011-03-15: wsfulton
|
||||
[UTL] Fix overloading when using const char[], problem reported by David Maxwell.
|
||||
Similarly for char[ANY] and const char[ANY].
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
int multiply10(int a) { return a*10; }
|
||||
int multiply20(int a) { return a*20; }
|
||||
int multiply30(int a) { return a*30; }
|
||||
int multiply40(int a) { return a*40; }
|
||||
int multiply50(int a) { return a*50; }
|
||||
%}
|
||||
|
||||
#define INCLUDE_B preproc_include_b.h
|
||||
|
@ -16,3 +18,20 @@ int multiply30(int a) { return a*30; }
|
|||
// Note that this test uses -includeall, so including preproc_include_b.h also includes preproc_include_c.h
|
||||
%include INCLUDE_B
|
||||
|
||||
%include"preproc_include_d withspace.h"
|
||||
|
||||
#define INCLUDE_E "preproc_include_e withspace.h"
|
||||
|
||||
%include INCLUDE_E
|
||||
|
||||
%inline %{
|
||||
#define INCLUDE_F /*comments*/ "preproc_include_f withspace.h"/*testing*/
|
||||
#include INCLUDE_F
|
||||
#include /*oooo*/"preproc_include_g.h"/*ahhh*/
|
||||
%}
|
||||
|
||||
%{
|
||||
int multiply60(int a) { return a*60; }
|
||||
int multiply70(int a) { return a*70; }
|
||||
%}
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
int multiply40(int a);
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
int multiply50(int a);
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
int multiply60(int a);
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
int multiply70(int a);
|
||||
|
|
@ -9,3 +9,15 @@ if preproc_include.multiply20(10) != 200:
|
|||
if preproc_include.multiply30(10) != 300:
|
||||
raise RuntimeError
|
||||
|
||||
if preproc_include.multiply40(10) != 400:
|
||||
raise RuntimeError
|
||||
|
||||
if preproc_include.multiply50(10) != 500:
|
||||
raise RuntimeError
|
||||
|
||||
if preproc_include.multiply60(10) != 600:
|
||||
raise RuntimeError
|
||||
|
||||
if preproc_include.multiply70(10) != 700:
|
||||
raise RuntimeError
|
||||
|
||||
|
|
|
@ -93,8 +93,6 @@ static String *cpp_include(const_String_or_char_ptr fn, int sysfile) {
|
|||
Setattr(included_files, file, file);
|
||||
}
|
||||
if (!s) {
|
||||
/* XXX(bhy) may not need the seek */
|
||||
/* Seek(fn, 0, SEEK_SET); */
|
||||
if (ignore_missing) {
|
||||
Swig_warning(WARN_PP_MISSING_FILE, Getfile(fn), Getline(fn), "Unable to find '%s'\n", fn);
|
||||
} else {
|
||||
|
@ -665,11 +663,30 @@ static String *get_filename(String *str, int *sysfile) {
|
|||
while (((c = Getc(str)) != EOF) && (c != '>'))
|
||||
Putc(c, fn);
|
||||
} else {
|
||||
String *preprocessed_str;
|
||||
Putc(c, fn);
|
||||
while (((c = Getc(str)) != EOF) && (!isspace(c)))
|
||||
Putc(c, fn);
|
||||
if (isspace(c))
|
||||
Ungetc(c, str);
|
||||
preprocessed_str = Preprocessor_replace(fn);
|
||||
Seek(preprocessed_str, 0, SEEK_SET);
|
||||
Delete(fn);
|
||||
|
||||
fn = NewStringEmpty();
|
||||
copy_location(preprocessed_str, fn);
|
||||
c = Getc(preprocessed_str);
|
||||
if (c == '\"') {
|
||||
while (((c = Getc(preprocessed_str)) != EOF) && (c != '\"'))
|
||||
Putc(c, fn);
|
||||
} else if (c == '<') {
|
||||
*sysfile = 1;
|
||||
while (((c = Getc(preprocessed_str)) != EOF) && (c != '>'))
|
||||
Putc(c, fn);
|
||||
} else {
|
||||
fn = Copy(preprocessed_str);
|
||||
}
|
||||
Delete(preprocessed_str);
|
||||
}
|
||||
Swig_filename_unescape(fn);
|
||||
Swig_filename_correct(fn);
|
||||
|
@ -1689,14 +1706,12 @@ String *Preprocessor_parse(String *s) {
|
|||
String *s1, *s2, *fn;
|
||||
char *dirname;
|
||||
int sysfile = 0;
|
||||
String *filename_processed;
|
||||
if (include_all && import_all) {
|
||||
Swig_warning(WARN_PP_INCLUDEALL_IMPORTALL, Getfile(s), Getline(id), "Both includeall and importall are defined: using includeall.\n");
|
||||
import_all = 0;
|
||||
}
|
||||
filename_processed = Preprocessor_replace(value);
|
||||
Seek(filename_processed, 0, SEEK_SET);
|
||||
fn = get_filename(filename_processed, &sysfile);
|
||||
Seek(value, 0, SEEK_SET);
|
||||
fn = get_filename(value, &sysfile);
|
||||
s1 = cpp_include(fn, sysfile);
|
||||
if (s1) {
|
||||
if (include_all)
|
||||
|
@ -1827,8 +1842,6 @@ String *Preprocessor_parse(String *s) {
|
|||
DOH *s1, *s2, *fn, *opt;
|
||||
String *options_whitespace = NewStringEmpty();
|
||||
String *filename_whitespace = NewStringEmpty();
|
||||
String *filename_unprocessed = NewStringEmpty();
|
||||
String *filename_processed;
|
||||
int sysfile = 0;
|
||||
|
||||
if (Equal(decl, kpp_dextern)) {
|
||||
|
@ -1840,15 +1853,7 @@ String *Preprocessor_parse(String *s) {
|
|||
opt = get_options(s);
|
||||
|
||||
skip_whitespace(s, filename_whitespace);
|
||||
copy_location(s, filename_unprocessed);
|
||||
while (((c = Getc(s)) != EOF) && (!isspace(c)))
|
||||
Putc(c, filename_unprocessed);
|
||||
if (isspace(c))
|
||||
Ungetc(c, s);
|
||||
filename_processed = Preprocessor_replace(filename_unprocessed);
|
||||
Seek(filename_processed, 0, SEEK_SET);
|
||||
|
||||
fn = get_filename(filename_processed, &sysfile);
|
||||
fn = get_filename(s, &sysfile);
|
||||
s1 = cpp_include(fn, sysfile);
|
||||
if (s1) {
|
||||
char *dirname;
|
||||
|
@ -1878,8 +1883,6 @@ String *Preprocessor_parse(String *s) {
|
|||
Delete(s1);
|
||||
}
|
||||
Delete(fn);
|
||||
Delete(filename_processed);
|
||||
Delete(filename_unprocessed);
|
||||
Delete(filename_whitespace);
|
||||
Delete(options_whitespace);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue