* 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.