All pastes #3289333 Raw Edit

Untitled

public unlisted text v1 · immutable
#3289333 ·published 2015-12-16 20:23 UTC
rendered paste body
diff --git a/src/emc/usr_intf/axis/extensions/emcmodule.cc b/src/emc/usr_intf/axis/extensions/emcmodule.cc
index 22cac98..bb17194 100644
--- a/src/emc/usr_intf/axis/extensions/emcmodule.cc
+++ b/src/emc/usr_intf/axis/extensions/emcmodule.cc
@@ -805,15 +805,12 @@ static PyObject *spindleoverride(pyCommandChannel *s, PyObject *o) {
 
 static PyObject *spindle(pyCommandChannel *s, PyObject *o) {
     int dir;
-    double vel;
+    double vel = 1;
     if(!PyArg_ParseTuple(o, "i|d", &dir, &vel)) return NULL;
     switch(dir) {
         case LOCAL_SPINDLE_FORWARD:
         case LOCAL_SPINDLE_REVERSE:
         {
-            if(PyTuple_Size(o) != 2) {
-            vel = 1;
-            }
             EMC_SPINDLE_ON m;
             m.speed = dir * vel;
             m.serial_number = next_serial(s);
@@ -862,14 +859,14 @@ static PyObject *spindle(pyCommandChannel *s, PyObject *o) {
 }
 
 static PyObject *mdi(pyCommandChannel *s, PyObject *o) {
+    EMC_TASK_PLAN_EXECUTE m;
     char *cmd;
-    int len;
+    unsigned int len;
     if(!PyArg_ParseTuple(o, "s#", &cmd, &len)) return NULL;
-    if(len >= 255) {
-        PyErr_Format(PyExc_ValueError,"MDI commands limited to 255 characters");
+    if(len > sizeof(m.command) - 1) {
+        PyErr_Format(PyExc_ValueError, "MDI commands limited to %d characters", sizeof(m.command) - 1);
         return NULL;
     }
-    EMC_TASK_PLAN_EXECUTE m;
     m.serial_number = next_serial(s);
     strcpy(m.command, cmd);
     s->c->write(m);
@@ -1115,9 +1112,13 @@ static PyObject *reset_interpreter(pyCommandChannel *s, PyObject *o) {
 static PyObject *program_open(pyCommandChannel *s, PyObject *o) {
     EMC_TASK_PLAN_OPEN m;
     char *file;
-    int len;
+    unsigned int len;
 
     if(!PyArg_ParseTuple(o, "s#", &file, &len)) return NULL;
+    if(len > sizeof(m.file) - 1) {
+        PyErr_Format(PyExc_ValueError, "File name limited to %d characters", sizeof(m.file) - 1);
+        return NULL;
+    }
     m.serial_number = next_serial(s);
     strcpy(m.file, file);
     s->c->write(m);
@@ -1247,7 +1248,7 @@ static PyObject *set_max_limit(pyCommandChannel *s, PyObject *o) {
 
 static PyObject *set_feed_override(pyCommandChannel *s, PyObject *o) {
     EMC_TRAJ_SET_FO_ENABLE m;
-    if(!PyArg_ParseTuple(o, "i", &m.mode))
+    if(!PyArg_ParseTuple(o, "b", &m.mode))
         return NULL;
 
     m.serial_number = next_serial(s);
@@ -1260,7 +1261,7 @@ static PyObject *set_feed_override(pyCommandChannel *s, PyObject *o) {
 
 static PyObject *set_spindle_override(pyCommandChannel *s, PyObject *o) {
     EMC_TRAJ_SET_SO_ENABLE m;
-    if(!PyArg_ParseTuple(o, "i", &m.mode))
+    if(!PyArg_ParseTuple(o, "b", &m.mode))
         return NULL;
 
     m.serial_number = next_serial(s);
@@ -1273,7 +1274,7 @@ static PyObject *set_spindle_override(pyCommandChannel *s, PyObject *o) {
 
 static PyObject *set_feed_hold(pyCommandChannel *s, PyObject *o) {
     EMC_TRAJ_SET_FH_ENABLE m;
-    if(!PyArg_ParseTuple(o, "i", &m.mode))
+    if(!PyArg_ParseTuple(o, "b", &m.mode))
         return NULL;
 
     m.serial_number = next_serial(s);
@@ -1286,7 +1287,7 @@ static PyObject *set_feed_hold(pyCommandChannel *s, PyObject *o) {
 
 static PyObject *set_adaptive_feed(pyCommandChannel *s, PyObject *o) {
     EMC_MOTION_ADAPTIVE m;
-    if(!PyArg_ParseTuple(o, "i", &m.status))
+    if(!PyArg_ParseTuple(o, "b", &m.status))
         return NULL;
 
     m.serial_number = next_serial(s);
@@ -1299,7 +1300,7 @@ static PyObject *set_adaptive_feed(pyCommandChannel *s, PyObject *o) {
 
 static PyObject *set_digital_output(pyCommandChannel *s, PyObject *o) {
     EMC_MOTION_SET_DOUT m;
-    if(!PyArg_ParseTuple(o, "ii", &m.index, &m.start))
+    if(!PyArg_ParseTuple(o, "bb", &m.index, &m.start))
         return NULL;
 
     m.now = 1;
@@ -1313,7 +1314,7 @@ static PyObject *set_digital_output(pyCommandChannel *s, PyObject *o) {
 
 static PyObject *set_analog_output(pyCommandChannel *s, PyObject *o) {
     EMC_MOTION_SET_AOUT m;
-    if(!PyArg_ParseTuple(o, "id", &m.index, &m.start))
+    if(!PyArg_ParseTuple(o, "bd", &m.index, &m.start))
         return NULL;
 
     m.now = 1;