Do not clear isSet before parsing ini

Fixes #221.
diff --git a/ini.go b/ini.go
index f9aea2e..e714d3d 100644
--- a/ini.go
+++ b/ini.go
@@ -98,8 +98,6 @@
 // information on the ini file format. The returned errors can be of the type
 // flags.Error or flags.IniError.
 func (i *IniParser) ParseFile(filename string) error {
-	i.parser.clearIsSet()
-
 	ini, err := readIniFromFile(filename)
 
 	if err != nil {
@@ -134,8 +132,6 @@
 //
 // The returned errors can be of the type flags.Error or flags.IniError.
 func (i *IniParser) Parse(reader io.Reader) error {
-	i.parser.clearIsSet()
-
 	ini, err := readIni(reader, "")
 
 	if err != nil {
diff --git a/ini_test.go b/ini_test.go
index 1d25d45..e1f22ce 100644
--- a/ini_test.go
+++ b/ini_test.go
@@ -846,6 +846,29 @@
 	assertString(t, opts.ValueWithDefaultOverrideCli, "cli-value")
 }
 
+func TestIniRequired(t *testing.T) {
+	var opts struct {
+		Required string               `short:"r" required:"yes" description:"required"`
+		Config   func(s string) error `long:"config" default:"no-ini-file" no-ini:"true"`
+	}
+
+	p := NewParser(&opts, Default)
+
+	opts.Config = func(s string) error {
+		inip := NewIniParser(p)
+		inip.ParseAsDefaults = true
+		return inip.Parse(strings.NewReader("Required = ini-value\n"))
+	}
+
+	_, err := p.ParseArgs([]string{"-r", "cli-value"})
+
+	if err != nil {
+		t.Fatalf("Failed to parse arguments: %s", err)
+	}
+
+	assertString(t, opts.Required, "cli-value")
+}
+
 func TestWriteFile(t *testing.T) {
 	file, err := ioutil.TempFile("", "")
 	if err != nil {