diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h
index 9a7579d..d751d2d 100644
--- a/include/libcamera/camera.h
+++ b/include/libcamera/camera.h
@@ -15,13 +15,13 @@ class Camera
 {
 public:
 	Camera(const std::string &name);
+	virtual ~Camera() { };
 
 	const std::string &name() const;
 	void get();
 	void put();
 
 private:
-	virtual ~Camera() { };
 	int ref_;
 	std::string name_;
 };
diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp
index 720d9c2..00c544c 100644
--- a/src/libcamera/pipeline/vimc.cpp
+++ b/src/libcamera/pipeline/vimc.cpp
@@ -41,6 +41,8 @@ PipeHandlerVimc::~PipeHandlerVimc()
 
 	if (dev_)
 		dev_->release();
+
+	delete camera_;
 }
 
 unsigned int PipeHandlerVimc::count()
