All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [Powertop] [PATCH] catch fstream exceptions in lib routines
@ 2012-05-18 10:58 Lekensteyn
  0 siblings, 0 replies; 2+ messages in thread
From: Lekensteyn @ 2012-05-18 10:58 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 504 bytes --]

On Friday 18 May 2012 13:17:39 Sergey Senozhatsky wrote:
Hi,

> @@ -187,10 +192,17 @@ int read_sysfs(const string &filename, bool *ok)
>  			*ok = false;
>  		return 0;
>  	}
> -	file >> i;
> +	try
> +	{
> +		file >> i;
> +		if (ok)
> +			*ok = true;
> +	} catch (std::exception &exc) {
> +		if (ok)
> +			*ok = "false";
I have changed this to false (without quotes), I guess that is what you meant.

With that change,
Tested-by: Lekensteyn <lekensteyn(a)gmail.com>

Thanks,
Peter

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Powertop] [PATCH] catch fstream exceptions in lib routines
@ 2012-05-18 10:17 Sergey Senozhatsky
  0 siblings, 0 replies; 2+ messages in thread
From: Sergey Senozhatsky @ 2012-05-18 10:17 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 2081 bytes --]

[PATCH] catch fstream exceptions in lib routines

Catch possible fstream and traits_type exceptions in lib.

Reported-by: Lekensteyn <lekensteyn(a)gmail.com>
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>

---

 src/lib.cpp |   54 +++++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 39 insertions(+), 15 deletions(-)

diff --git a/src/lib.cpp b/src/lib.cpp
index 53638dd..bcd809f 100644
--- a/src/lib.cpp
+++ b/src/lib.cpp
@@ -172,8 +172,13 @@ void write_sysfs(const string &filename, const string &value)
 	file.open(filename.c_str(), ios::out);
 	if (!file)
 		return;
-	file << value;
-	file.close();
+	try 
+	{
+		file << value;
+		file.close();
+	} catch (std::exception &exc) {
+		return;
+	}
 }
 
 int read_sysfs(const string &filename, bool *ok)
@@ -187,10 +192,17 @@ int read_sysfs(const string &filename, bool *ok)
 			*ok = false;
 		return 0;
 	}
-	file >> i;
+	try
+	{
+		file >> i;
+		if (ok)
+			*ok = true;
+	} catch (std::exception &exc) {
+		if (ok)
+			*ok = "false";
+		i = 0;
+	}
 	file.close();
-	if (ok)
-		*ok = true;
 	return i;
 }
 
@@ -203,11 +215,17 @@ string read_sysfs_string(const string &filename)
 	file.open(filename.c_str(), ios::in);
 	if (!file)
 		return "";
-	file.getline(content, 4096);
-	file.close();
-	c = strchr(content, '\n');
-	if (c)
-		*c = 0;
+	try
+	{
+		file.getline(content, 4096);
+		file.close();
+		c = strchr(content, '\n');
+		if (c)
+			*c = 0;
+	} catch (std::exception &exc) {
+		file.close();
+		return "";
+	}
 	return content;
 }
 
@@ -224,11 +242,17 @@ string read_sysfs_string(const char *format, const char *param)
 	file.open(filename, ios::in);
 	if (!file)
 		return "";
-	file.getline(content, 4096);
-	file.close();
-	c = strchr(content, '\n');
-	if (c)
-		*c = 0;
+	try
+	{
+		file.getline(content, 4096);
+		file.close();
+		c = strchr(content, '\n');
+		if (c)
+			*c = 0;
+	} catch (std::exception &exc) {
+		file.close();
+		return "";
+	}
 	return content;
 }
 


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-05-18 10:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-18 10:58 [Powertop] [PATCH] catch fstream exceptions in lib routines Lekensteyn
  -- strict thread matches above, loose matches on Subject: below --
2012-05-18 10:17 Sergey Senozhatsky

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.