aboutsummaryrefslogtreecommitdiff
path: root/src/luax
diff options
context:
space:
mode:
Diffstat (limited to 'src/luax')
-rw-r--r--src/luax/mod.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/luax/mod.rs b/src/luax/mod.rs
index 13afd88..7b1c9b4 100644
--- a/src/luax/mod.rs
+++ b/src/luax/mod.rs
@@ -121,10 +121,14 @@ pub fn preprocess(s: &str) -> Result<String> {
pub fn preprocess_dir(path: &Path, output_path: &Path) -> Result<usize> {
let mut preprocessed = 0;
+ let absolute_output_path = output_path.canonicalize()?;
for entry in std::fs::read_dir(path)? {
let entry = entry?;
let path = entry.path();
if path.is_dir() {
+ if path.canonicalize()? == absolute_output_path {
+ continue;
+ }
let output_dir = output_path.join(path.file_name().unwrap());
if !output_dir.is_dir() && output_dir.exists() {
return Err(std::io::Error::new(
@@ -136,7 +140,8 @@ pub fn preprocess_dir(path: &Path, output_path: &Path) -> Result<usize> {
if !output_dir.exists() {
std::fs::create_dir(&output_dir)?;
}
- preprocessed += preprocess_dir(&path, &output_path.join(path.file_name().unwrap()))?;
+ let inner_path = output_path.join(path.file_name().unwrap());
+ preprocessed += preprocess_dir(&path, &inner_path)?;
} else {
if path.extension().unwrap_or_default() != "luax" {
continue;