In trying to diagnose this issue at https://support.bioconductor.org/p/108548/ I've found some weird behaviour with Windows, normalizePath(), and non-ASCII characters. Essentially, if I run normalizePath() recursively on a path that contains 'é' (I haven't tried other characters) something 'changes' in the string, but I can't work out what, and it breaks a subsequent .Call() which uses the path.
The example below tries to demonstrate this in a fairly concise manner. It works fine if normalizePath() is run once, but fails after it's run a second time on itself. However, change "éxample" for "example" and both instances work. Similarly, both run fine on my Linux machine with the non-ASCII character inplace. I'd be grateful if anyone else with a Windows machine could verify this behaviour, or to shed any light on what might be the difference between path1 and path2 below. Thank, Mike ------------------------------ ## setup some HDF5 components required later flags <- rhdf5:::h5checkConstants("H5F_ACC", h5default("H5F_ACC")) fcpl <- rhdf5:::h5checktypeAndPLC(NULL, "H5P_FILE_CREATE", allowNULL = TRUE) fapl <- rhdf5::H5Pcreate("H5P_FILE_ACCESS") ## create a folder with non-ASCII character dir.create('éxample') setwd("éxample") ## create two normalized paths recursively - these are 'identical' path1 <- normalizePath('test.h5', mustWork = FALSE) path2 <- normalizePath(path1, mustWork = FALSE) identical(path1, path2) ## create an HDF5 file using path1 - this works fid <- .Call("_H5Fcreate", path1, flags, fcpl@ID, fapl@ID, PACKAGE = "rhdf5") .Call("_H5Fclose", fid, PACKAGE = "rhdf5") file.remove(path1) ## create an HDF5 file using path2 - this fails fid <- .Call("_H5Fcreate", path2, flags, fcpl@ID, fapl@ID, PACKAGE = "rhdf5") if(exists('fid2')) { .Call("_H5Fclose", fid2, PACKAGE = "rhdf5") file.remove(path2) } ## tidy up rhdf5::h5closeAll() setwd("../") [[alternative HTML version deleted]] _______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel