@@ -1425,6 +1425,11 @@ impl PathBuf { |
|
|
1425 |
1425 |
/// If `extension` is the empty string, [`self.extension`] will be [`None`] |
1426 |
1426 |
/// afterwards, not `Some("")`. |
1427 |
1427 |
/// |
|
1428 |
+ /// # Panics |
|
1429 |
+ /// |
|
1430 |
+ /// Panics if the passed extension contains a path separator (see |
|
1431 |
+ /// [`is_separator`]). |
|
1432 |
+ /// |
1428 |
1433 |
/// # Caveats |
1429 |
1434 |
/// |
1430 |
1435 |
/// The new `extension` may contain dots and will be used in its entirety, |
@@ -1470,6 +1475,14 @@ impl PathBuf { |
|
|
1470 |
1475 |
} |
1471 |
1476 |
|
1472 |
1477 |
fn _set_extension(&mut self, extension: &OsStr) -> bool { |
|
1478 |
+for &b in extension.as_encoded_bytes() { |
|
1479 |
+if b < 128 { |
|
1480 |
+if is_separator(b as char) { |
|
1481 |
+panic!("extension cannot contain path separators: {:?}", extension); |
|
1482 |
+} |
|
1483 |
+} |
|
1484 |
+} |
|
1485 |
+ |
1473 |
1486 |
let file_stem = match self.file_stem() { |
1474 |
1487 |
None => return false, |
1475 |
1488 |
Some(f) => f.as_encoded_bytes(), |