Even I was facing same problem. And I've a solution 2...   open classes/Link.php and find this:  
   public function getProductLink($id_product, $alias = NULL, $category = NULL, $ean13 = NULL)
   {
        if (!isset($this->allow)) $this->allow = 0;
       if (is_object($id_product))
           return ($this->allow == 1)?(_PS_USE_SSL_.__PS_BASE_URI__.$id_product->category.'/'.intval($id_product->id).'-'.$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') : 
           (_PS_USE_SSL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product->id));
       elseif ($alias)
           return ($this->allow == 1)?(_PS_USE_SSL_.__PS_BASE_URI__.($category ? ($category.'/') : '').intval($id_product).'-'.$alias.($ean13 ? '-'.$ean13 : '').'.html') : 
           (_PS_USE_SSL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product));
       else
           return _PS_USE_SSL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product);
   }
  and replace with this:    
   public function getProductLink($id_product, $alias = NULL, $category = NULL, $ean13 = NULL)
   {
        if (!isset($this->allow)) $this->allow = 0;
       //there was an error in line no. 46. when clean url is enabled. fixed on May 19 2009
       if (is_object($id_product))
           return ($this->allow == 1)?(_PS_USE_SSL_.__PS_BASE_URI__.($category ? ($id_product->category.'/') : '').intval($id_product->id).'-'.$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') : 
           (_PS_USE_SSL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product->id));
       elseif ($alias)
           return ($this->allow == 1)?(_PS_USE_SSL_.__PS_BASE_URI__.($category ? ($category.'/') : '').intval($id_product).'-'.$alias.($ean13 ? '-'.$ean13 : '').'.html') : 
           (_PS_USE_SSL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product));
       else
           return _PS_USE_SSL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product);
   }
  Enjoy! Regards, Marghoob Suleman