Use std::unique_ptr instead of raw pointer in SourceData
Use std::unique_ptr for memory management instead of manually managing a raw pointer, which is very error prone.
Use std::unique_ptr for memory management instead of manually managing a raw pointer, which is very error prone.