Error setting a property of a graphics entity with the dot operator on a handle from a calling function

Save these two functions in a file testhandle.sci:



function testhandle(nodot, h_arg)
  if ~exists('nodot') then
    nodot = %f;
  end
  if ~exists('h_arg') then
    h_arg = %f;
  end
  f = scf();
  a = f.children;
  a.user_data = 1;
  if h_arg then
    testhandle2(nodot, a)
  else
    testhandle2(nodot)
  end
endfunction

function testhandle2(nodot, a)
  disp("type(a) = " + string(type(a)))
//pause
  if nodot then
    set(a,"user_data",2);
  else
    a.user_data = 2;
  end
  disp("type(a) = " + string(type(a)))
  delete(f)
endfunction



Load it and and then run it:

-->testhandle(%f)
 type(a) = 9
 type(a) = 17

-->testhandle(%t)
 type(a) = 9
 type(a) = 9

That is, if you use use the dot operator on a handle from a calling function to set a property of a graphics entity, like here (the first case)

  a.user_data = 2;

the handle (type 9) is changed to an mlist (type 17) but if you change the property with the set routine (the second case)

  set(a,"user_data",2);

the handle is kept. It also works with the dot operator if you send the handle as an argument to testhandle2 (see the code above):

-->testhandle(%f, %t)
or
-->testhandle(h_arg=%t)
 type(a) = 9
 type(a) = 9

Is this a known bug or shall I report a new one?

Regards
Stefan
_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users

Reply via email to