diff options
author | Franz Zotter <fzotter@users.sourceforge.net> | 2006-03-26 12:47:03 +0000 |
---|---|---|
committer | Franz Zotter <fzotter@users.sourceforge.net> | 2006-03-26 12:47:03 +0000 |
commit | 4998870e6829a2a3818ae87557f81f220442a6b0 (patch) | |
tree | 2ff79d57392e5703e3a6d7a61627a2d3282a9fcc | |
parent | 6b079b5df20a90500294e2f1a58912b32074cd82 (diff) |
added octave error handling 'try' and 'catch' to pdoctave_get. So unknown variables are returned now as empty
svn path=/trunk/externals/iem/pdoctave/; revision=4770
-rw-r--r-- | pdoctave_dataframe.c | 8 | ||||
-rw-r--r-- | pdoctave_get.c | 13 | ||||
-rw-r--r-- | write_shared_mem.cc | 2 |
3 files changed, 16 insertions, 7 deletions
diff --git a/pdoctave_dataframe.c b/pdoctave_dataframe.c index 1ff6f09..a5d64a6 100644 --- a/pdoctave_dataframe.c +++ b/pdoctave_dataframe.c @@ -207,7 +207,7 @@ void blockForWriting (SharedDataFrame *sdf) int sleepUntilReadUnBlocked (SharedDataFrame *sdf) { - alarm(MAX_SLEEP_TIME); + //alarm(MAX_SLEEP_TIME); while ((sdf->block_for_read!=0)&&scheduling_ok) sched_yield(); return scheduling_ok; @@ -215,7 +215,7 @@ int sleepUntilReadUnBlocked (SharedDataFrame *sdf) int sleepUntilReadBlocked (SharedDataFrame *sdf) { - alarm(MAX_SLEEP_TIME); + //alarm(MAX_SLEEP_TIME); while ((sdf->block_for_read==0)&&scheduling_ok) sched_yield(); return scheduling_ok; @@ -223,14 +223,14 @@ int sleepUntilReadBlocked (SharedDataFrame *sdf) int sleepUntilWriteUnBlocked (SharedDataFrame *sdf) { - alarm(MAX_SLEEP_TIME); + //alarm(MAX_SLEEP_TIME); while ((sdf->block_for_write!=0)&&scheduling_ok) sched_yield(); return scheduling_ok; } int sleepUntilWriteBlocked (SharedDataFrame *sdf) { - alarm(MAX_SLEEP_TIME); + //alarm(MAX_SLEEP_TIME); while ((sdf->block_for_write==0)&&scheduling_ok) sched_yield(); return scheduling_ok; diff --git a/pdoctave_get.c b/pdoctave_get.c index 8177c8c..614ec84 100644 --- a/pdoctave_get.c +++ b/pdoctave_get.c @@ -50,14 +50,21 @@ static void pDOctaveGetCommand (PDOctaveGet *pdoctget_obj) { char *cmd; cmd = pdoctget_obj->oct_command; - strcpy(cmd, "write_shared_mem("); - cmd += 17; + strcpy(cmd, "try\n write_shared_mem("); + cmd += strlen(cmd); strcpy(cmd, pdoctget_obj->oct_name); cmd += strlen (cmd); *cmd++ = ','; sprintf(cmd, "%d", getSharedDataFrameId(pdoctget_obj->sdf)); cmd += strlen(cmd); - strcpy (cmd, ")\n"); + strcpy (cmd, ");\n catch\n disp(\"undefined variable\"); write_shared_mem("); + cmd += strlen(cmd); + strcpy (cmd, "[],"); + cmd +=strlen(cmd); + sprintf(cmd, "%d", getSharedDataFrameId(pdoctget_obj->sdf)); + cmd +=strlen(cmd); + strcpy (cmd,");\n end\n\0"); + post("pdoctave_get: %s",pdoctget_obj->oct_command); writeToOctaveStdIN (pdoctget_obj->oct_command); } diff --git a/write_shared_mem.cc b/write_shared_mem.cc index fc9107e..7810d1d 100644 --- a/write_shared_mem.cc +++ b/write_shared_mem.cc @@ -67,6 +67,8 @@ DEFUN_DLD (write_shared_mem, args, , "returning an octave value to pd-value") } if (args(0).is_empty()) { pdtype = UNKNOWN; + unBlockForWriting (sdf); + freeSharedDataFrame (&sdf); return octave_value(); } else if (args(0).is_string()) { |