[PATCH] Fix incorrect population of programme data from in-memory cache

dinkypumpkin dinkypumpkin at gmail.com
Wed Feb 8 15:17:06 EST 2012

This patch has been incorporated into the get_iplayer Git repo.
Instructions for updating are here:


Commit message and patch follow:

When populating programme data from an in-memory cache, get_iplayer was
only copying PID strings rather than references to objects containing
full programme data.  Under some circumstances when running PVR searches,
this would lead to the fatal error:

Can't use string ("b123x45y") as a HASH ref while "strict refs" in use
 get_iplayer |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/get_iplayer b/get_iplayer
index c7322d4..6b21c5d 100755
--- a/get_iplayer
+++ b/get_iplayer
@@ -1518,8 +1518,8 @@ sub get_links {
 			$prog->{$pid} = progclass( lc($memcache->{$prog_type}->{$pid}->{type}) )->new( 'pid' => $pid );
 			# Deep-copy of elements in memcache prog instance to %prog
 			$prog->{$pid}->{$_} = $memcache->{$prog_type}->{$pid}->{$_} for @cache_format;
-			# Copy pid into index_prog hash
-			$index_prog->{ $prog->{$pid}->{index} } = $pid;
+			# Copy object reference into index_prog hash
+			$index_prog->{ $prog->{$pid}->{index} } = $prog->{$pid};
 		logger "INFO: Got (quick) ".(keys %{ $memcache->{$prog_type} })." memcache entries for $prog_type\n" if $opt->{verbose};
 		return 0;

More information about the get_iplayer mailing list