| Index: source/libvpx/test/video_source.h
 | 
| ===================================================================
 | 
| --- source/libvpx/test/video_source.h	(revision 240950)
 | 
| +++ source/libvpx/test/video_source.h	(working copy)
 | 
| @@ -18,16 +18,35 @@
 | 
|  
 | 
|  namespace libvpx_test {
 | 
|  
 | 
| -static FILE *OpenTestDataFile(const std::string& file_name) {
 | 
| -  std::string path_to_source = file_name;
 | 
| -  const char *kDataPath = getenv("LIBVPX_TEST_DATA_PATH");
 | 
| +// Helper macros to ensure LIBVPX_TEST_DATA_PATH is a quoted string.
 | 
| +// These are undefined right below GetDataPath
 | 
| +// NOTE: LIBVPX_TEST_DATA_PATH MUST NOT be a quoted string before
 | 
| +// Stringification or the GetDataPath will fail at runtime
 | 
| +#define TO_STRING(S) #S
 | 
| +#define STRINGIFY(S) TO_STRING(S)
 | 
|  
 | 
| -  if (kDataPath) {
 | 
| -    path_to_source = kDataPath;
 | 
| -    path_to_source += "/";
 | 
| -    path_to_source += file_name;
 | 
| +// A simple function to encapsulate cross platform retrieval of test data path
 | 
| +static std::string GetDataPath() {
 | 
| +  const char *const data_path = getenv("LIBVPX_TEST_DATA_PATH");
 | 
| +  if (data_path == NULL) {
 | 
| +#ifdef LIBVPX_TEST_DATA_PATH
 | 
| +    // In some environments, we cannot set environment variables
 | 
| +    // Instead, we set the data path by using a preprocessor symbol
 | 
| +    // which can be set from make files
 | 
| +    return STRINGIFY(LIBVPX_TEST_DATA_PATH);
 | 
| +#else
 | 
| +    return ".";
 | 
| +#endif
 | 
|    }
 | 
| +  return data_path;
 | 
| +}
 | 
|  
 | 
| +// Undefining stringification macros because they are not used elsewhere
 | 
| +#undef TO_STRING
 | 
| +#undef STRINGIFY
 | 
| +
 | 
| +static FILE *OpenTestDataFile(const std::string& file_name) {
 | 
| +  const std::string path_to_source = GetDataPath() + "/" + file_name;
 | 
|    return fopen(path_to_source.c_str(), "rb");
 | 
|  }
 | 
|  
 | 
| 
 |