Question: i am using Grunt to watch my set of sass files and compile to css when they change using the grunt-contrib-sass plugin. I have sourcemap set to true as i find this functionality really useful in css debugging.

However i am getting the following error message:

```
Running "sass:uk" (sass) task
WARNING: Couldn't determine public URL for "C:\Ruby193\lib\ruby\gems\1.9.1\gems\compass-core-1.0.0.alpha.19\stylesheets\compass\reset\_utilities.scss" while generating sourcemap.
  Without a public URL, there's nothing for the source map to link to.

```

Any ideas why this is occurring?

Here is my Gruntfile:

```
module.exports = function(grunt) {

grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    watch: {
        files: ['./style/v4/sass/**/*.scss'],
        tasks: ['sass:uk'],
        options: {
            spawn: false,
        },
    },
    sass: {
        uk: {
            options: {
                style: 'compressed',
                sourcemap: true,
                compass: true
            },
            files: {'./style/v4/css/screen.css': './style/v4/sass/screen.scss'}
        }
    }
});

grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-sass');

grunt.registerTask('default', ['watch']);

};

```

Thanks

Answer: 
It all depends on what you are trying to do.

I prefer to have the setter making a copy. The calling method could reuse the object and thus modify the set object as well (if no copy was made). You will have to decide if you want this to happen or not.

For getters you have to decide if you want changes to the returned object directly affect the 'original'.

Generally making copies slows things down and uses more memory while not copying can result in bugs if objects are unintentionally modified.
If your class is a public API the setter needs a defensive copy, because an attacker could maliciously modify the Date passed to the setter **after** passing it, changing the internal state of your class in an unintended manner. It could bypass checks in the setter, because they work only when the method is called, and not after.

The attacker doesn't need to "get" the original Date object: he can simply hold the passed reference and modify it after calling the setter.