### Godot version

v4.0 rc6

### System information

Windows 10

### Issue description

When using a ViewportTexture from a SubViewport on a TextureRect, it throws errors after running the scene once and then switching scenes in the editor.
![Pasted image 20230227212626](https://user-images.githubusercontent.com/44676282/221680047-984fa03e-33d1-4856-9a7f-1700b28423cf.png)


### Steps to reproduce

Run the canvas-scene once.
Switch to another scene in the editor.
Switch back to the canvas-scene

### Minimal reproduction project

[ViewportTextureError.zip](https://github.com/godotengine/godot/files/10844099/ViewportTextureError.zip)

lock.lock();
	LocalVector<String> to_remove;
	for (KeyValue<String, Resource *> &E : resources) {
		Ref<Resource> ref = Ref<Resource>(E.value);
		if (!ref.is_valid()) {
			
			E.value->path_cache = String();
			to_remove.push_back(E.key);
			continue;
		}
		p_resources->push_back(ref);
	}
	for (const String &E : to_remove) {
		resources.erase(E);
	}
	lock.unlock();
}
int ResourceCache::get_cached_resource_count() {
	lock.lock();
	int rc = resources.size();
	lock.unlock();
	return rc;
}