diff --git a/MagickCore/coder.c b/MagickCore/coder.c
index f4def8f..9db3547 100644
--- a/MagickCore/coder.c
+++ b/MagickCore/coder.c
@@ -324,15 +324,23 @@
MagickExport const CoderInfo *GetCoderInfo(const char *name,
ExceptionInfo *exception)
{
+ const CoderInfo
+ *coder_info;
+
assert(exception != (ExceptionInfo *) NULL);
if (IsCoderTreeInstantiated(exception) == MagickFalse)
return((const CoderInfo *) NULL);
+ LockSemaphoreInfo(coder_semaphore);
if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
{
ResetSplayTreeIterator(coder_list);
- return((const CoderInfo *) GetNextValueInSplayTree(coder_list));
+ coder_info=(const CoderInfo *) GetNextValueInSplayTree(coder_list);
+ UnlockSemaphoreInfo(coder_semaphore);
+ return(coder_info);
}
- return((const CoderInfo *) GetValueFromSplayTree(coder_list,name));
+ coder_info=(const CoderInfo *) GetValueFromSplayTree(coder_list,name);
+ UnlockSemaphoreInfo(coder_semaphore);
+ return(coder_info);
}
/*
diff --git a/MagickCore/color.c b/MagickCore/color.c
index ddf673a..d182058 100644
--- a/MagickCore/color.c
+++ b/MagickCore/color.c
@@ -912,12 +912,12 @@
if (color_list == (LinkedListInfo *) NULL)
if (IfMagickFalse(IsColorListInstantiated(exception)))
return((const ColorInfo *) NULL);
- if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
- return((const ColorInfo *) GetValueFromLinkedList(color_list,0));
/*
Strip names of whitespace.
*/
- (void) CopyMagickString(colorname,name,MaxTextExtent);
+ *colorname='\0';
+ if (name != (const char *) NULL)
+ (void) CopyMagickString(colorname,name,MaxTextExtent);
for (q=colorname; *q != '\0'; q++)
{
if (isspace((int) ((unsigned char) *q)) == 0)
@@ -931,6 +931,11 @@
LockSemaphoreInfo(color_semaphore);
ResetLinkedListIterator(color_list);
p=(const ColorInfo *) GetNextValueInLinkedList(color_list);
+ if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
+ {
+ UnlockSemaphoreInfo(color_semaphore);
+ return(p);
+ }
while (p != (const ColorInfo *) NULL)
{
if (((p->compliance & compliance) != 0) &&
diff --git a/MagickCore/configure.c b/MagickCore/configure.c
index b102d2c..5985d1b 100644
--- a/MagickCore/configure.c
+++ b/MagickCore/configure.c
@@ -266,14 +266,17 @@
assert(exception != (ExceptionInfo *) NULL);
if (IsConfigureListInstantiated(exception) == MagickFalse)
return((const ConfigureInfo *) NULL);
- if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
- return((const ConfigureInfo *) GetValueFromLinkedList(configure_list,0));
/*
Search for configure tag.
*/
LockSemaphoreInfo(configure_semaphore);
ResetLinkedListIterator(configure_list);
p=(const ConfigureInfo *) GetNextValueInLinkedList(configure_list);
+ if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
+ {
+ UnlockSemaphoreInfo(configure_semaphore);
+ return(p);
+ }
while (p != (const ConfigureInfo *) NULL)
{
if (LocaleCompare(name,p->name) == 0)
diff --git a/MagickCore/delegate.c b/MagickCore/delegate.c
index 581698a..ce6d84e 100644
--- a/MagickCore/delegate.c
+++ b/MagickCore/delegate.c
@@ -369,14 +369,17 @@
if (delegate_list == (LinkedListInfo *) NULL)
if( IfMagickFalse(IsDelegateListInstantiated(exception)) )
return((const DelegateInfo *) NULL);
- if ((LocaleCompare(decode,"*") == 0) && (LocaleCompare(encode,"*") == 0))
- return((const DelegateInfo *) GetValueFromLinkedList(delegate_list,0));
/*
Search for named delegate.
*/
LockSemaphoreInfo(delegate_semaphore);
ResetLinkedListIterator(delegate_list);
p=(const DelegateInfo *) GetNextValueInLinkedList(delegate_list);
+ if ((LocaleCompare(decode,"*") == 0) && (LocaleCompare(encode,"*") == 0))
+ {
+ UnlockSemaphoreInfo(delegate_semaphore);
+ return(p);
+ }
while (p != (const DelegateInfo *) NULL)
{
if (p->mode > 0)
diff --git a/MagickCore/locale.c b/MagickCore/locale.c
index e336f45..2f1452c 100644
--- a/MagickCore/locale.c
+++ b/MagickCore/locale.c
@@ -420,15 +420,23 @@
MagickExport const LocaleInfo *GetLocaleInfo_(const char *tag,
ExceptionInfo *exception)
{
+ const LocaleInfo
+ *locale_info;
+
assert(exception != (ExceptionInfo *) NULL);
if (IsLocaleTreeInstantiated(exception) == MagickFalse)
return((const LocaleInfo *) NULL);
+ LockSemaphoreInfo(locale_semaphore);
if ((tag == (const char *) NULL) || (LocaleCompare(tag,"*") == 0))
{
ResetSplayTreeIterator(locale_list);
- return((const LocaleInfo *) GetNextValueInSplayTree(locale_list));
+ locale_info=(const LocaleInfo *) GetNextValueInSplayTree(locale_list);
+ UnlockSemaphoreInfo(locale_semaphore);
+ return(locale_info);
}
- return((const LocaleInfo *) GetValueFromSplayTree(locale_list,tag));
+ locale_info=(const LocaleInfo *) GetValueFromSplayTree(locale_list,tag);
+ UnlockSemaphoreInfo(locale_semaphore);
+ return(locale_info);
}
/*
diff --git a/MagickCore/log.c b/MagickCore/log.c
index 889caed..0ebd2b8 100644
--- a/MagickCore/log.c
+++ b/MagickCore/log.c
@@ -184,6 +184,7 @@
*log_list = (LinkedListInfo *) NULL;
static SemaphoreInfo
+ *event_semaphore = (SemaphoreInfo *) NULL,
*log_semaphore = (SemaphoreInfo *) NULL;
/*
@@ -273,14 +274,17 @@
assert(exception != (ExceptionInfo *) NULL);
if (IsLogListInstantiated(exception) == MagickFalse)
return((LogInfo *) NULL);
- if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
- return((LogInfo *) GetValueFromLinkedList(log_list,0));
/*
Search for log tag.
*/
LockSemaphoreInfo(log_semaphore);
ResetLinkedListIterator(log_list);
p=(LogInfo *) GetNextValueInLinkedList(log_list);
+ if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
+ {
+ UnlockSemaphoreInfo(log_semaphore);
+ return(p);
+ }
while (p != (LogInfo *) NULL)
{
if (LocaleCompare(name,p->name) == 0)
diff --git a/MagickCore/magic.c b/MagickCore/magic.c
index 77864e9..c70552f 100644
--- a/MagickCore/magic.c
+++ b/MagickCore/magic.c
@@ -254,8 +254,6 @@
assert(exception != (ExceptionInfo *) NULL);
if (IsMagicListInstantiated(exception) == MagickFalse)
return((const MagicInfo *) NULL);
- if (magic == (const unsigned char *) NULL)
- return((const MagicInfo *) GetValueFromLinkedList(magic_list,0));
if (length == 0)
return((const MagicInfo *) NULL);
/*
@@ -264,6 +262,11 @@
LockSemaphoreInfo(magic_semaphore);
ResetLinkedListIterator(magic_list);
p=(const MagicInfo *) GetNextValueInLinkedList(magic_list);
+ if (magic == (const unsigned char *) NULL)
+ {
+ UnlockSemaphoreInfo(magic_semaphore);
+ return(p);
+ }
while (p != (const MagicInfo *) NULL)
{
assert(p->offset >= 0);
diff --git a/MagickCore/magick.c b/MagickCore/magick.c
index 9d1ef3c..da6528f 100644
--- a/MagickCore/magick.c
+++ b/MagickCore/magick.c
@@ -414,24 +414,23 @@
assert(exception != (ExceptionInfo *) NULL);
if (IsMagickTreeInstantiated(exception) == MagickFalse)
return((const MagickInfo *) NULL);
- if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
- {
-#if defined(MAGICKCORE_MODULES_SUPPORT)
- if (LocaleCompare(name,"*") == 0)
- (void) OpenModules(exception);
-#endif
- LockSemaphoreInfo(magick_semaphore);
- ResetSplayTreeIterator(magick_list);
- p=(const MagickInfo *) GetNextValueInSplayTree(magick_list);
- UnlockSemaphoreInfo(magick_semaphore);
- return(p);
- }
/*
Find name in list.
*/
LockSemaphoreInfo(magick_semaphore);
ResetSplayTreeIterator(magick_list);
p=(const MagickInfo *) GetNextValueInSplayTree(magick_list);
+ if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
+ {
+#if defined(MAGICKCORE_MODULES_SUPPORT)
+ if (LocaleCompare(name,"*") == 0)
+ (void) OpenModules(exception);
+#endif
+ ResetSplayTreeIterator(magick_list);
+ p=(const MagickInfo *) GetNextValueInSplayTree(magick_list);
+ UnlockSemaphoreInfo(magick_semaphore);
+ return(p);
+ }
while (p != (const MagickInfo *) NULL)
{
if (LocaleCompare(p->name,name) == 0)
diff --git a/MagickCore/mime.c b/MagickCore/mime.c
index 414e8f2..56fef38 100644
--- a/MagickCore/mime.c
+++ b/MagickCore/mime.c
@@ -320,7 +320,7 @@
(void) InsertValueInLinkedList(mime_list,0,
RemoveElementByValueFromLinkedList(mime_list,p));
UnlockSemaphoreInfo(mime_semaphore);
- return(mime_info);
+ return(p);
}
/*
diff --git a/MagickCore/module.c b/MagickCore/module.c
index 611d2d6..4051ddd 100644
--- a/MagickCore/module.c
+++ b/MagickCore/module.c
@@ -215,24 +215,26 @@
*/
MagickExport ModuleInfo *GetModuleInfo(const char *tag,ExceptionInfo *exception)
{
+ ModuleInfo
+ *module_info;
+
if (IsModuleTreeInstantiated(exception) == MagickFalse)
return((ModuleInfo *) NULL);
+ LockSemaphoreInfo(module_semaphore);
+ ResetSplayTreeIterator(module_list);
if ((tag == (const char *) NULL) || (LocaleCompare(tag,"*") == 0))
{
- ModuleInfo
- *p;
-
#if defined(MAGICKCORE_MODULES_SUPPORT)
if (LocaleCompare(tag,"*") == 0)
(void) OpenModules(exception);
#endif
- LockSemaphoreInfo(module_semaphore);
- ResetSplayTreeIterator(module_list);
- p=(ModuleInfo *) GetNextValueInSplayTree(module_list);
+ module_info=(ModuleInfo *) GetNextValueInSplayTree(module_list);
UnlockSemaphoreInfo(module_semaphore);
- return(p);
+ return(module_info);
}
- return((ModuleInfo *) GetValueFromSplayTree(module_list,tag));
+ module_info=(ModuleInfo *) GetValueFromSplayTree(module_list,tag);
+ UnlockSemaphoreInfo(module_semaphore);
+ return(module_info);
}
/*
diff --git a/MagickCore/policy.c b/MagickCore/policy.c
index 2010505..943a815 100644
--- a/MagickCore/policy.c
+++ b/MagickCore/policy.c
@@ -171,12 +171,12 @@
assert(exception != (ExceptionInfo *) NULL);
if (IsPolicyListInstantiated(exception) == MagickFalse)
return((PolicyInfo *) NULL);
- if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
- return((PolicyInfo *) GetValueFromLinkedList(policy_list,0));
/*
Strip names of whitespace.
*/
- (void) CopyMagickString(policyname,name,MaxTextExtent);
+ *policyname='\0';
+ if (name != (const char *) NULL)
+ (void) CopyMagickString(policyname,name,MaxTextExtent);
for (q=policyname; *q != '\0'; q++)
{
if (isspace((int) ((unsigned char) *q)) == 0)
@@ -190,6 +190,11 @@
LockSemaphoreInfo(policy_semaphore);
ResetLinkedListIterator(policy_list);
p=(PolicyInfo *) GetNextValueInLinkedList(policy_list);
+ if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
+ {
+ UnlockSemaphoreInfo(policy_semaphore);
+ return(p);
+ }
while (p != (PolicyInfo *) NULL)
{
if (LocaleCompare(policyname,p->name) == 0)
diff --git a/MagickCore/type.c b/MagickCore/type.c
index 59e5eb9..b727289 100644
--- a/MagickCore/type.c
+++ b/MagickCore/type.c
@@ -158,12 +158,17 @@
assert(exception != (ExceptionInfo *) NULL);
if (IsTypeTreeInstantiated(exception) == MagickFalse)
return((const TypeInfo *) NULL);
+ LockSemaphoreInfo(type_semaphore);
if ((name == (const char *) NULL) || (LocaleCompare(name,"*") == 0))
{
ResetSplayTreeIterator(type_list);
- return((const TypeInfo *) GetNextValueInSplayTree(type_list));
+ type_info=(const TypeInfo *) GetNextValueInSplayTree(type_list);
+ UnlockSemaphoreInfo(type_semaphore);
+ return(type_info);
}
- return((const TypeInfo *) GetValueFromSplayTree(type_list,name));
+ type_info=(const TypeInfo *) GetValueFromSplayTree(type_list,name);
+ UnlockSemaphoreInfo(type_semaphore);
+ return(type_info);
}
/*
diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs
index 0747797..1d73b70 100644
--- a/PerlMagick/Magick.xs
+++ b/PerlMagick/Magick.xs
@@ -10001,7 +10001,7 @@
if (attribute_flag[2] != 0)
channel=(ChannelType) argument_list[2].integer_reference;
channel_mask=SetImageChannelMask(image,channel);
- image=RadialBlurImage(image,geometry_info.rho,exception);
+ image=RotationalBlurImage(image,geometry_info.rho,exception);
if (image != (Image *) NULL)
(void) SetImageChannelMask(image,channel_mask);
break;