handle message_queue_create/1 with vars right

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@2160 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc 2008-03-25 00:11:55 +00:00
parent 7d6e7f2613
commit e2519f4e3a
2 changed files with 16 additions and 3 deletions

View File

@ -17,6 +17,9 @@ xb
<h2>Yap-5.1.3:</h2>
<ul>
<li> FIXED: handle message_queue_create/1 with vars right (obs from
Paulo Moura).</li>
<li> FIXED: handle thread overflow right (obs from Paulo Moura).</li>
<li> NEW: upgrade clpqr and chr (SWI compatibility).</li>
<li> NEW: expects_dialect/1 directive (SWI compatibility).</li>
<li> NEW: terms:unifiable/3 (SWI compatibility).</li>

View File

@ -570,8 +570,8 @@ message_queue_create(Name) :-
'$create_mq'(Name) :-
'$new_mutex'(Mutex),
'$cond_create'(Cond),
'$mq_iname'(Name, CName),
'$global_queue_mutex'(QMutex),
'$mq_iname'(Name, CName),
'$lock_mutex'(QMutex),
( recorded('$queue',q(Name,_,_, _),_) ->
'$unlock_mutex'(QMutex),
@ -583,11 +583,21 @@ message_queue_create(Name) :-
'$mq_iname'(I,X) :-
integer(I), !,
number_codes(I,Codes),
atom_codes(X, [0'$,0'M,0'Q,0'_|Codes]).
atomic_concat('$MQ_NAME_KEY_',I,X).
'$mq_iname'(A,X) :-
var(A), !,
'$integers'(I),
atomic_concat(message_queue_,I,A),
atomic_concat('$MQ_NAME_KEY_',A,X),
\+ recorded('$queue',q(A,_,_, X),_), !.
'$mq_iname'(A,X) :-
atom_concat('$MQ_NAME_KEY_',A,X).
'$integers'(0).
'$integers'(I) :-
'$integers'(I1),
I is I1+1.
message_queue_destroy(Name) :-
var(Name), !,